通过SSH连接通过JSch加密的indentiy和没有密码短语

时间:2015-09-10 20:29:48

标签: java ssh jsch

我经常编写一些软件,这些软件将被安排到服务器之间的SFTP文件中。我目前无法使用JSch连接到远程服务器。

我认为这源于我的程序正在运行的帐户以及使用密码加密的私有SSH密钥。

以下代码:

    public SFTPDelivery(Environment environment) throws Exception {
        super(environment);
        String userName = System.getProperty("user.name");
        String userDir = System.getProperty("user.home");

        jsch.addIdentity(userDir + "//.ssh//id_rsa");
        jsch.setKnownHosts(userDir + "//.ssh//known_hosts");

        session = jsch.getSession(userName, environment.getRemoteServer(), 22);
        session.setConfig("StrictHostKeyChecking", "yes");
        session.setConfig("PreferredAuthentications", "publickey");
        session.connect();

        channel = (ChannelSftp) session.openChannel("sftp");
        channel.connect();
    }

抛出:

    com.jcraft.jsch.JSchException: USERAUTH fail
        at com.jcraft.jsch.UserAuthPublicKey.start(UserAuthPublicKey.java:119)
        at com.jcraft.jsch.Session.connect(Session.java:463)
        at com.jcraft.jsch.Session.connect(Session.java:183)
        at xxx.xxx.xxx.xxx.SFTPDelivery.<init>(SFTPDelivery.java:30)

JSch希望通过加密身份传递密码。为了安全起见,我无法对密码进行硬编码。

我们的想法是,该程序将在QualAccount上以QualServer运行,并尝试通过SSH连接到QualAccount上的DevServer。 JSch失败,因为QualAccount的id_rsa已加密,并且未包含所需的密码短语。

我为此写一个问题的原因是因为从QualAccount的终端,我能够在没有任何密码/密码提示的情况下SSH到另一个帐户/服务器。

如果帐户已经具有通过终端连接的必要SSH权限,那么JSch是否有办法不要求加密身份使用密码?

感谢。

0 个答案:

没有答案