标签: jsch

com.jcraft.jsch.JSchException:UnknownHostKey

我正在尝试使用Jsch在Java中建立SSH连接.我的代码产生以下异常:

com.jcraft.jsch.JSchException: UnknownHostKey: mywebsite.com. 
RSA key fingerprint is 22:fb:ee:fe:18:cd:aa:9a:9c:78:89:9f:b4:78:75:b4
Run Code Online (Sandbox Code Playgroud)

我找不到如何在Jsch文档中验证主机密钥.我在下面提供了我的代码.

import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;

public class ssh {
    public static void main(String[] arg) {

        try {
            JSch jsch = new JSch();

            //create SSH connection
            String host = "mywebsite.com";
            String user = "username";
            String password = "123456";

            Session session = jsch.getSession(user, host, 22);
            session.setPassword(password);
            session.connect();

        } catch(Exception e) {
            System.out.println(e);
        } 
    }
}
Run Code Online (Sandbox Code Playgroud)

java ssh jsch

167
推荐指数
7
解决办法
17万
查看次数

scp来自java

通过Java编程语言执行scp传输的最佳方法是什么?我似乎可以通过JSSE,JSch或充气城堡java库来执行此操作.这些解决方案似乎都没有一个简单的答案.

java scp bouncycastle jsse jsch

78
推荐指数
5
解决办法
9万
查看次数

使用JSch通过SSH运行命令

我正在尝试使用JSch通过SSH运行命令,但JSch几乎没有文档,我发现的例子很糟糕.例如,这个没有显示处理输出流的代码.并且,这个使用丑陋的黑客来知道何时停止从输出流中读取.

java ssh jsch

61
推荐指数
5
解决办法
12万
查看次数

密码'aes256-cbc'是必需的,但它不可用

我正在尝试使用JSch进行SFTP,但是我遇到了一些错误:

com.jcraft.jsch.JSchException:密码'aes256-cbc'是必需的,但它不可用.

以下是我使用的代码.我错过了什么吗?

JSch jsch = new JSch();
Session session = null;

jsch.addIdentity("C:\\privatekey.ppk", "Password");

session = jsch.getSession("user", "54.251.240.234", 22);
session.setConfig("StrictHostKeyChecking", "no");


Channel channel = session.openChannel("sftp");
channel.connect();
ChannelSftp sftpChannel = (ChannelSftp) channel;
sftpChannel.put("C:\\Users\\test.txt", "/home/user/test.txt");
sftpChannel.exit();
session.disconnect();
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪

[8/30/13 1:56:26:556 SGT] 00000021 SystemErr     R com.jcraft.jsch.JSchException: The cipher 'aes256-cbc' is required, but it is not available.
[8/30/13 1:56:26:557 SGT] 00000021 SystemErr     R  at com.jcraft.jsch.KeyPair.loadPPK(KeyPair.java:1017)
[8/30/13 1:56:26:557 SGT] 00000021 SystemErr     R  at com.jcraft.jsch.KeyPair.load(KeyPair.java:590)
[8/30/13 1:56:26:557 SGT] 00000021 SystemErr     R  at com.jcraft.jsch.KeyPair.load(KeyPair.java:542)
[8/30/13 1:56:26:557 SGT] …
Run Code Online (Sandbox Code Playgroud)

java ssh jsch

46
推荐指数
3
解决办法
4万
查看次数

通过Java连接SFTP请求奇怪的身份验证

所以我正在编写一个需要通过SFTP连接到远程服务器的小程序,下拉文件,然后处理该文件.我在这里通过一些答案遇到了JSch,它看起来非常适合这项任务.到目前为止,易于使用,我已经让它工作,我想修复一件小事.我正在使用以下代码连接并拉下文件:

    JSch jsch = new JSch();
    Session session = null;
    try {
        session = jsch.getSession("username", "127.0.0.1", 22);
        session.setConfig("StrictHostKeyChecking", "no");
        session.setPassword("password");
        session.connect();

        Channel channel = session.openChannel("sftp");
        channel.connect();
        ChannelSftp sftpChannel = (ChannelSftp) channel;
        sftpChannel.cd(REMOTE_FTP_DIR);
        sftpChannel.lcd(INCOMING_DIR);
        sftpChannel.get(TMP_FILE, TMP_FILE);
        sftpChannel.exit();
        session.disconnect();
    } catch (JSchException e) {
        e.printStackTrace();
    } catch (SftpException e) {
        e.printStackTrace();
    }
Run Code Online (Sandbox Code Playgroud)

所以这有效,我得到了文件.我在linux服务器上运行此代码,当我运行代码时,JSch会询问我的Kerberos用户名和密码.看起来像:

Kerberos用户名[george]:

george的Kerberos密码:

我只是输入两个问题,然后程序似乎继续没有问题.但是我需要通过cron任务自动执行此代码,所以我宁愿不让它暂停程序来问我这两个问题.有什么我不提供它,所以它不会问这个?我需要做些什么来阻止它问?希望有人有一些想法.谢谢.

java sftp kerberos jsch

42
推荐指数
2
解决办法
2万
查看次数

使用java通过ssh连接到远程mysql数据库

如何通过SSH从Java应用程序连接到远程MySQL数据库.小代码示例对我有帮助,我很欣赏这一点.

java mysql ssh jsch mysql-connector

40
推荐指数
4
解决办法
6万
查看次数

我们可以使用JSch进行基于SSH密钥的通信吗?

我正在使用JSch进行sftp通信,现在我想使用方便基于密钥的身份验证,密钥由我的网络团队一次加载到客户端和服务器机器上,所有后来的通信都只是基于用户的,我们已经加载了密钥.

sftp -oPort=10022 jmark@192.18.0.246
Run Code Online (Sandbox Code Playgroud)

tjill@192.18.0.135

像这个命令工作正常并连接到sftp,我如何以编程方式实现此功能.

如果不可能使用JSch,请建议其他一些库.我遇到了Apache SSHD.

java ssh jsch

38
推荐指数
1
解决办法
9万
查看次数

JSchException:算法协商失败

我试图通过ssh与JSch(0.1.44-1)连接到远程sftp服务器但在"session.connect();"期间 我得到这个例外:

com.jcraft.jsch.JSchException: Algorithm negotiation fail at 
com.jcraft.jsch.Session.receive_kexinit(Session.java:529) at 
com.jcraft.jsch.Session.connect(Session.java:291) at com.jcraft.jsch.Session.connect(Session.java:154)
... 
Run Code Online (Sandbox Code Playgroud)

来自JSch的日志:

INFO: Connecting to xx.xx.xx.xxport 22 
INFO: Connection established 
INFO: Remote version string: SSH-2.0-WeOnlyDo 2.0.6 
INFO: Local version string: SSH-2.0-JSCH-0.1.44 
INFO: CheckCiphers: aes256-ctr,aes192-ctr,aes128-ctr,aes256-cbc,aes192-cbc,aes128-cbc,3des-ctr,arcfour,arcfour128,arcfour256
INFO: aes256-ctr is not available. 
INFO: aes192-ctr is not available.
INFO: aes256-cbc is not available. 
INFO: aes192-cbc is not available.
INFO: arcfour256 is not available. 
INFO: SSH_MSG_KEXINIT sent
INFO: SSH_MSG_KEXINIT received 
INFO: Disconnecting from xx.xx.xx.xx port 22 
Run Code Online (Sandbox Code Playgroud)

我可以使用linux sftp命令登录远程服务器.我试图在互联网上找到任何线索,但我失败了.

linux sftp命令的调试输出:

OpenSSH_5.5p1-DAM_1.2, OpenSSL 0.9.8r …
Run Code Online (Sandbox Code Playgroud)

java encryption ssh sftp jsch

37
推荐指数
5
解决办法
10万
查看次数

使用jschexception验证false的SSH有时会失败

要求是从一个服务器ssh到多个服务器并执行命令.

当我这样做时,我经常(但并非总是)在尝试从一台服务器ssh到另一台服务器时收到此异常.可能是什么原因以及如何解决?任何帮助都可能很棒.提前致谢!

jcraft.jsch.JSchException: verify: false 
     at jcraft.jsch.Session.connect(Session.java:309) 
     at jcraft.jsch.Session.connect(Session.java:162)
Run Code Online (Sandbox Code Playgroud)

java ssh jsch

36
推荐指数
2
解决办法
3万
查看次数

Jenkins中的算法协商失败了SSH

我正在尝试从Jenkins ssh到本地服务器,但抛出以下错误:

[SSH] Exception:Algorithm negotiation fail
    com.jcraft.jsch.JSchException: Algorithm negotiation fail
    at com.jcraft.jsch.Session.receive_kexinit(Session.java:520)
    at com.jcraft.jsch.Session.connect(Session.java:286)
    at com.jcraft.jsch.Session.connect(Session.java:150)
    at org.jvnet.hudson.plugins.SSHSite.createSession(SSHSite.java:141)
    at org.jvnet.hudson.plugins.SSHSite.executeCommand(SSHSite.java:151)
    at org.jvnet.hudson.plugins.SSHBuildWrapper.executePreBuildScript(SSHBuildWrapper.java:75)
    at org.jvnet.hudson.plugins.SSHBuildWrapper.setUp(SSHBuildWrapper.java:59)
    at hudson.model.Build$BuildExecution.doRun(Build.java:154)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:533)
    at hudson.model.Run.execute(Run.java:1754)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
    at hudson.model.ResourceController.execute(ResourceController.java:89)
    at hudson.model.Executor.run(Executor.java:240)
Finished: FAILURE
Run Code Online (Sandbox Code Playgroud)

SSH服务器上安装的Java版本:

java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b18)
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)
Run Code Online (Sandbox Code Playgroud)

客户端上安装的java版本:

java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b18)
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)
Run Code Online (Sandbox Code Playgroud)

还尝试了这个解决方案: JSchException:算法协商失败 但它不起作用.从腻子一切似乎都没问题.建立连接,但是当我触发Jenkins作业时,会抛出错误.我应该尝试另一个版本的ssh服务器.现在我正在使用copssh.

java ssh jsch jenkins

33
推荐指数
3
解决办法
6万
查看次数

标签 统计

java ×10

jsch ×10

ssh ×8

sftp ×2

bouncycastle ×1

encryption ×1

jenkins ×1

jsse ×1

kerberos ×1

mysql ×1

mysql-connector ×1

scp ×1