要使用Java在没有密码的情况下SSH到主机上,您可以使用密钥对认证。以下是使用Java实现此目标的完整步骤:
首先,您需要生成一个公钥和私钥对。在Java中,您可以使用java.security.KeyPair
和java.security.KeyPairGenerator
类生成密钥对。
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
keyPairGenerator.initialize(2048);
KeyPair keyPair = keyPairGenerator.generateKeyPair();
将生成的公钥添加到主机的authorized_keys
文件中。您可以使用java.nio.file.Files
类将公钥写入文件。
Path authorizedKeysPath = Paths.get("/path/to/authorized_keys");
Files.write(authorizedKeysPath, keyPair.getPublic().getEncoded());
使用私钥建立SSH连接。您可以使用com.jcraft.jsch.JSch
和com.jcraft.jsch.Session
类实现这一点。
JSch jsch = new JSch();
jsch.addIdentity("/path/to/private/key", null, null);
Session session = jsch.getSession("username", "hostname", 22);
session.connect();
现在,您可以使用session.execCommand()
方法执行命令。
ChannelExec channel = (ChannelExec) session.openChannel("exec");
channel.setCommand("your-command-here");
channel.connect();
您可以使用channel.getInputStream()
方法获取命令输出。
InputStream inputStream = channel.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
最后,不要忘记关闭连接。
channel.disconnect();
session.disconnect();
这样,您就可以使用Java在没有密码的情况下SSH到主机上了。请注意,这只是一个简单的示例,您可能需要根据您的需求进行调整。
领取专属 10元无门槛券
手把手带您无忧上云