如何通过java连接到unix而不传递用户名和密码
如何在不传递用户名和密码的情况下从java连接到远程unix主机 下面的代码是我正在使用的如何通过java连接到unix而不传递用户名和密码,java,unix,Java,Unix,如何在不传递用户名和密码的情况下从java连接到远程unix主机 下面的代码是我正在使用的 package testing; import java.io.InputStream; import com.jcraft.jsch.ChannelExec; import com.jcraft.jsch.JSch; import com.jcraft.jsch.Session; public class Test { pu
package testing;
import java.io.InputStream;
import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
public class Test {
public static void main(String[] args) {
execute();
}
public static void execute() {
try {
JSch jsch = new JSch();
String user = "xxxx";
String host = "xxxxxx";
int port = 22;
String privateKey = "xxxxxxxxx";
jsch.addIdentity(privateKey);
System.out.println("identity added ");
Session session = jsch.getSession("nudayaku","cloudgw-dev-01" );
System.out.println("session created.");
session.setConfig("PreferredAuthentications", "publickey");
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.connect();
System.out.println("session connected.....");
} catch (Exception e) {
System.err.println(e);
}
}
}
请查找以下错误
堆栈跟踪错误
com.jcraft.jsch.Session.connect(Session.java:519)
com.jcraft.jsch.Session.connect(Session.java:183)
testing.Test.execute(Test.java:39)
testing.Test.main(Test.java:17)
根据迄今为止的证据,最可能的原因是(IMO):
~/.ssh
目录配置不正确。一个常见问题是~/.ssh
目录或~/.ssh/authorized_keys
文件太开放如果以上都不是原因,那么您需要在调试级别打开JSch日志,以获得更多关于正在进行的工作的见解。不幸的是,JSch默认情况下不使用日志框架,但JSch示例页面中有一个示例提供了您可以借用的代码:
sshd
的调试。(请注意,sshd
是一个安全/隐私问题。将记录所有SSH连接的敏感信息。)
这不是问题所在,但以下代码看起来有点奇怪:
session.setConfig("PreferredAuthentications", "publickey");
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
你为什么不把最后三句话写下来呢
session.setConfig("StrictHostKeyChecking", "no");
所以你有密码。你的实际问题是什么?它起作用了吗?它怎么不起作用?您不知道如何使用它吗?嗨,Stephen,我正在使用此代码,但正在创建下面的erroridentity添加会话。com.jcraft.jsch.JSchException:Auth faily请在问题中添加详细信息。请更新问题中的相同内容