标签: sshj

在sshj中处理"[HOST_KEY_NOT_VERIFIABLE]无法用指纹验证`ssh-rsa`主机密钥"

我有一个奇怪的问题sshj(我正在使用sshj v0.6.0),我需要一些人的帮助.使用公钥进行身份验证在某些计算机上运行正常但在其他计算机上无法正常工作,我看到以下错误.

唯一不同的是,有问题的UNIX ID有问题,即coonradt似乎在〜/ .ssh/config下面的下面列出的配置设置只在触发了以下错误的框上

Host *
    Protocol 1,2
    FallBackToRsh no
    ForwardAgent yes
    ForwardX11 yes
    PasswordAuthentication yes
    RhostsAuthentication no
    RhostsRSAAuthentication no
    RSAAuthentication yes
    NoHostAuthenticationForLocalhost yes
    StrictHostKeyChecking no
  KeepAlive yes
Run Code Online (Sandbox Code Playgroud)

从上面的配置文件中我了解到有问题的ID应该使用Protocol 1,2并且我怀疑这可能与我的失败有关(我不是很确定,但这只是一个预感)

对于其工作正常的所有其他UNIX ID,我没有任何这样的配置文件.

PS:我无法更改UNIX ID"coonradt"的配置,因为中央哈德森服务器正在使用此ID.

如果有人可以帮助我建议这里可能有什么问题,我将不胜感激

以下是我看到的错误:

Oct 24, 2011 2:30:37 AM net.schmizz.sshj.DefaultConfig initCipherFactories
WARNING: Disabling high-strength ciphers: cipher strengths apparently limited by JCE policy
Oct 24, 2011 2:30:38 AM net.schmizz.sshj.transport.TransportImpl init
INFO: Client identity string: SSH-2.0-SSHJ_0_6_0
Oct 24, 2011 2:30:38 AM net.schmizz.sshj.transport.TransportImpl init
INFO: Server identity string: SSH-1.99-OpenSSH_4.3
Oct …
Run Code Online (Sandbox Code Playgroud)

java ssh sshj

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

使用SSHJ"无法加载known_hosts"异常

我在使用SSHJ时遇到异常.

这是我实现它的方式:

public static void main(String[] args) throws IOException { 
    // TODO Auto-generated method stub 
    final SSHClient ssh = new SSHClient(); 
    ssh.loadKnownHosts(); 
    ssh.connect("serverName"); 
    try{ 
        ssh.authPublickey("myUserId"); 
        final Session session = ssh.startSession(); 
        try{ 
            final Command cmd = session.exec("net send myMachineName Hello!!!"); 
            System.out.println(cmd.getOutputAsString()); 
            System.out.println("\n Exit Status: "+cmd.getExitStatus()); 
        }finally{ 
            session.close(); 
        } 
        }finally{ 
            ssh.disconnect(); 
        }    
    } 

} 
Run Code Online (Sandbox Code Playgroud)

但我得到以下异常:

Exception in thread "main" java.io.IOException: Could not load known_hosts
    at net.schmizz.sshj.SSHClient.loadKnownHosts(SSHClient.java:528)
    at SSHTEST.main(SSHTEST.java:25)
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

java ssh sshj

10
推荐指数
2
解决办法
6336
查看次数

在sshj中执行命令的顺序

我需要使用sshj库通过ssh在远程服务器上执行一些命令序列.

我做

        Session session = ssh.startSession();
        Session.Command cmd = session.exec("ls -l");
        System.out.println(IOUtils.readFully(cmd.getInputStream()).toString());
        cmd.join(10, TimeUnit.SECONDS);
        Session.Command cmd2 = session.exec("ls -a");
        System.out.println(IOUtils.readFully(cmd2.getInputStream()).toString());
Run Code Online (Sandbox Code Playgroud)

它抛出了我

net.schmizz.sshj.common.SSHRuntimeException:此会话通道全部用完

但我不能为每个命令重新创建会话,因为这个例子它将显示主目录列表,但不显示/ some/dir列表.

java ssh sshj

10
推荐指数
3
解决办法
6733
查看次数

私有/公钥认证的ssh示例

谁能给我一个sshj私有/公钥认证的例子

在sshj命令行相当于什么,

ssh -i /path/to/mykey.private username@host
Run Code Online (Sandbox Code Playgroud)

我试过(省略错误处理),

final SSHClient ssh = new SSHClient();
ssh.loadKnownHosts();
ssh.connect("host");
ssh.authPublickey("username", "/path/to/mykey.private");
final Session session = ssh.startSession();
...
Run Code Online (Sandbox Code Playgroud)

但在我看到的日志声明中,

DEBUG net.schmizz.sshj.SSHClient - Attempting to load key from: /path/to/mykey.private
WARN  net.schmizz.sshj.SSHClient - Could not load keys due to: {}
net.schmizz.sshj.common.SSHException: No provider available forUnknown key file
    at net.schmizz.sshj.SSHClient.loadKeys(SSHClient.java:482) ~[sshj-0.3.0.jar:na]
...
Exception in thread "main" 10:49:55.943 [reader] DEBUG
net.schmizz.sshj.transport.Reader - Stopping
net.schmizz.sshj.userauth.UserAuthException: Exhausted available authentication methods
Run Code Online (Sandbox Code Playgroud)

谢谢,埃弗雷特

java ssh sshj

8
推荐指数
1
解决办法
9233
查看次数

从sshj开始

我想创建一个Java应用程序,用ssh连接到我的远程Linux服务器.有人可以在eclipse中向我发送一些文档或教程以开始使用sshj(我在Windows环境中工作).

java eclipse ssh sshj

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

SSHJ文件中的公钥验证示例

有人能给我一个使用SSHJ进行公钥认证的例子吗?我意识到这个问题基本上与私有/公钥认证的ssh示例完全相同,但是作者的答案/sf/users/8844251/指的是一个不再存在的Google用户组,我就是无法让它工作.

谢谢!菲尔

java file public-key sshj

7
推荐指数
1
解决办法
6686
查看次数

SSHJ - 密钥对登录EC2实例

我有一个看起来像SSHJ测试中的pem文件(虽然我没有看到它被引用):https://github.com/shikhar/sshj/blob/master/src/test/resources/hostkey.pem.只是尝试通过pem文件验证到EC2实例(读作字符串),但有麻烦.有人做过吗?

    SSHClient ssh = new SSHClient();
    ssh.connect("ec2-XXXXXXX.compute-1.amazonaws.com");
    ssh.authPublickey("ubuntu", getPemAsString("/Users/me/ec2.pem"));
    final Session session = ssh.startSession();
    session.exec("echo -e \"test\" >> /home/ubuntu/testfile");
Run Code Online (Sandbox Code Playgroud)

错误如下:

INFO [main] (TransportImpl.java:152) - Client identity string: SSH-2.0-SSHJ_0_8
INFO [main] (TransportImpl.java:161) - Server identity string: SSH-2.0-OpenSSH_5.8p1 Debian-7ubuntu1
INFO [main] (KeyExchanger.java:195) - Sending SSH_MSG_KEXINIT
INFO [reader] (KeyExchanger.java:357) - Received SSH_MSG_KEXINIT
INFO [reader] (AbstractDHG.java:110) - Sending SSH_MSG_KEXDH_INIT
INFO [reader] (KeyExchanger.java:370) - Received kex followup data
INFO [reader] (AbstractDHG.java:120) - Received SSH_MSG_KEXDH_REPLY
ERROR [reader] (TransportImpl.java:570) - Dying because - …
Run Code Online (Sandbox Code Playgroud)

java ssh amazon-ec2 sshj

6
推荐指数
1
解决办法
8882
查看次数

connect()时的Android SSHJ异常 - "未找到KeyFactory ECDSA实现"

我正在尝试从我的Android应用程序打开SSH客户端会话.尝试连接到本地网络上的设备(Raspberry Pi).我正在使用SSHJ库版本0.10.0.它在ssh.connect()通话中失败,TransportException最终由a引起NoSuchAlgorithmException.请参阅下面的例外树.

SSHClient ssh = new SSHClient(new AndroidConfig());
Session session = null;

try {    
    //ssh.loadKnownHosts();

    // Exception thrown on this line
    ssh.connect("192.168.1.109", 22);

    // Doesn't reach below
    ssh.authPassword("user", "password");
    session = ssh.startSession();
}
catch (net.schmizz.sshj.transport.TransportException ex) {
    ;
}
Run Code Online (Sandbox Code Playgroud)

例外树:

net.schmizz.sshj.transport.TransportException
 net.schmizz.sshj.common.SSHException
  net.schmizz.sshj.common.SSHRuntimeException
   java.security.GeneralSecurityException: java.security.NoSuchAlgorithmException: KeyFactory ECDSA implementation not found
    java.security.NoSuchAlgorithmException: KeyFactory ECDSA implementation not found
Run Code Online (Sandbox Code Playgroud)

其他系统信息:

SSHJ library   : v0.10.0
Android device : Galaxy Note 3 running Android 4.4.2
Run Code Online (Sandbox Code Playgroud)

我在Android Studio中使用了maven依赖支持来引入SSHJ …

java ssh android sshj raspberry-pi

6
推荐指数
2
解决办法
2174
查看次数

尝试启动会话的SSHJ导致SSH_MSG_UNIMPLEMENTED

我在Windows机器上,我需要编写一些使用SSH连接到远程Solaris机器的Java代码,然后可以在其上执行命令并获取其输出,但我在验证方面遇到了一些麻烦.(我正在使用SSHJ 0.8.1)

这是连接和启动会话的代码:

public void init(String address, int portNumber, String hostKeyVerifier) throws IOException {
      client = new SSHClient();
      client.getConnection().setTimeout(300);
      client.addHostKeyVerifier(hostKeyVerifier); 
      client.connect(address, portNumber); 
      client.authPassword("user", "password");
      session = client.startSession();
   }
Run Code Online (Sandbox Code Playgroud)

我希望这会导致工作连接,因为尝试使用相同的代码(尽管使用不同的主机密钥验证程序,地址,端口和凭据)连接到Apache Karaf的实例.相反,这是我得到的输出:

16:27:58.029 [main] INFO  n.schmizz.sshj.common.SecurityUtils - BouncyCastle not registered, using the default JCE provider
16:27:58.159 [main] INFO  n.s.sshj.transport.TransportImpl - Client identity string: SSH-2.0-SSHJ_0_8_1_SNAPSHOT
16:27:58.159 [main] INFO  n.s.sshj.transport.TransportImpl - Server identity string: SSH-2.0-Sun_SSH_2.2
16:27:58.159 [main] DEBUG net.schmizz.concurrent.Promise - Setting <<kex done>> to `null`
16:27:58.159 [main] DEBUG n.s.sshj.transport.KeyExchanger - Sending SSH_MSG_KEXINIT
16:27:58.169 [main] …
Run Code Online (Sandbox Code Playgroud)

java ssh sshj

6
推荐指数
0
解决办法
1859
查看次数

net.schmizz.sshj.userauth.UserAuthException:耗尽的可用身份验证方法

第一次询问stackoverflow,还使用sshj.除了sshj提供的示例之外,我还没有找到任何帮助使用此API的好资源.

我一直在尝试使用sshj进行远程端口转发,并遇到了这个错误.

Exception in thread "main" net.schmizz.sshj.userauth.UserAuthException: Exhausted available authentication methods
Run Code Online (Sandbox Code Playgroud)

我用VM测试了auth,但没有使用公钥.我将使用它连接到我知道登录的EC2实例.

public void startRemotePortForwardingConnection(LocalPortForwarder.Parameters parameters) throws IOException{
    sshClient.connect(parameters.getLocalHost());
    this.connectionStatus = CONNECTED;
    System.out.print("Connected to localhost" + NEWLINE);

    try {
        sshClient.authPassword(this.username, this.password);
        System.out.print("Authorized with as user " + username + " with password " + password + NEWLINE);

        // the local port we should be listening on
        RemotePortForwarder.Forward localPortToListenOn = new RemotePortForwarder.Forward(parameters.getLocalPort());
        System.out.print("localPortToListenOn initialized" + NEWLINE);

        // where we should forward the packets
        InetSocketAddress socketAddress = new InetSocketAddress(parameters.getRemoteHost(), parameters.getRemotePort());
        SocketForwardingConnectListener remotePortToForwardTo …
Run Code Online (Sandbox Code Playgroud)

ssh portforwarding sshj

5
推荐指数
1
解决办法
5870
查看次数