Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过java连接到unix而不传递用户名和密码_Java_Unix - Fatal编程技术网

如何通过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

如何在不传递用户名和密码的情况下从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 {

        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请在问题中添加详细信息。请更新问题中的相同内容