gpt4 book ai didi

java - 从 Java 生成 SSH key

转载 作者:行者123 更新时间:2023-12-02 01:42:33 31 4
gpt4 key购买 nike

我有一个 Java 程序,它尝试在 Linux 计算机上运行 shell 命令,具体命令是生成 SSH key 。这些 key 不需要有密码,所以我尝试使用 ssh-keygen -t rsa -b 4096 -f my_key_name -P "" 运行它。我知道这个命令有效,因为我可以在命令行上运行它。但是当我尝试使用下面的代码运行它时,它显示 passphrase is too short (minimum five characters)

我可以将以下代码更改为: ssh-keygen -t rsa -b 4096 -f my_key_name -P "foobar"这确实可以在 Java 中正常工作,但我又不需要密码。

RunCommandDto runCommandDto = new RunCommandDto();
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec('ssh-keygen -t rsa -b 4096 -f my_key_name -P ""');

BufferedReader stdInput = new BufferedReader(new InputStreamReader(proc.getInputStream()));
BufferedReader stdError = new BufferedReader(new InputStreamReader(proc.getErrorStream()));

String output = "";

while ((String sInOut = stdInput.readLine()) != null) {
output += sInOut + "\n";
}

while ((String sErr = stdError.readLine()) != null) {
output += sErr + "\n";
}

最佳答案

我尝试通过运行命令来创建它,在该命令中传递包含该命令的文件。我能够创建该文件。这是我的测试:

   @Test
public void test() throws IOException {
String output = "";
String sInOut;
String sErr;
// RunCommandDto runCommandDto = new RunCommandDto();

String[] cmd = { "sh", "~/ssh_key_gen.sh"};

Runtime rt = Runtime.getRuntime();
Process proc = rt.exec( cmd );

BufferedReader stdInput = new BufferedReader( new InputStreamReader( proc.getInputStream() ) );
BufferedReader stdError = new BufferedReader( new InputStreamReader( proc.getErrorStream() ) );
while ( (sInOut = stdInput.readLine()) != null ) {
output += sInOut + "\n";
}

while ( (sErr = stdError.readLine()) != null ) {
output += sErr + "\n";
}

System.out.println("if failed: " + output);
}

包含该命令的我的文件如下所示:

#!/bin/bash
ssh-keygen -t rsa -b 4096 -f /tmp/sshkey -q -N ""

请注意:您可以获取文件“ssh_key_gen.sh”的绝对路径,也可以获取它的相对路径。

关于java - 从 Java 生成 SSH key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54241022/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com