मेरे पास एक पेम फ़ाइल है जो एसएसएचजे परीक्षणों में से एक की तरह दिखती है (हालांकि मुझे इसे संदर्भित नहीं किया जाता है): https://github.com/shikhar/sshj/blob/master/src/test/resources/hostkey.pem। बस एक ईसी 2 उदाहरण (स्ट्रिंग के रूप में पढ़ें) में पेम फ़ाइल के माध्यम से लिखने की कोशिश कर रहा है, लेकिन परेशानी है। किसी ने यह किया?एसएसएचजे - ईसी 2 इंस्टेंस में कीपैयर लॉगिन
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");
त्रुटि के नीचे है:
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 - net.schmizz.sshj.transport.TransportException: [HOST_KEY_NOT_VERIFIABLE] Could not verify `ssh-rsa` host key with fingerprint `xx:0a:xx:b5:c2:fd:44:1d:e0:e4:fc:d8:5f:f8:dd:f6` for `ec2-XXXX.compute-1.amazonaws.com` on port 22
INFO [reader] (TransportImpl.java:302) - Setting active service to null-service
ERROR [main] (Promise.java:171) - <<kex done>> woke to: net.schmizz.sshj.transport.TransportException: [HOST_KEY_NOT_VERIFIABLE] Could not verify `ssh-rsa` host key with fingerprint `xx:0a:xx:b5:c2:fd:44:1d:e0:e4:fc:xx:5f:f8:dd:f6` for `ec2-XXXX.compute-1.amazonaws.com` on port 22
संपादित करें: अभी भी कोई भाग्य। निजी कुंजी एडब्ल्यूएस लॉगिन के लिए उत्पन्न कुछ गलत होना चाहिए?
SSHClient ssh = new SSHClient();
ssh.connect("ec2-XXX.compute-1.amazonaws.com");
ssh.addHostKeyVerifier("dd:9c:XX:fa:6a:XX:32:6a:2b:c3:e7:bd:2b:15:26:5f:76:b6:c4:fe");
ssh.authPublickey("ubuntu", getRSAPrivateKeyAsString("mypem")); // Must be wrong?
final Session session = ssh.startSession();
session.exec("echo -e \"test\" >> /home/ubuntu/testfile");
आप कनेक्ट(), यह के रूप में सत्यापन – shikhar
जोड़ने अंत में के दौरान पहले ही पूरी हो जाना पड़ता है बुला के बाद होस्ट कुंजी सत्यापनकर्ता जोड़ रहे हैं मुझे वास्तव में जेएसएच का उपयोग करना बेहतर लगता है। यहां इस लाइब्रेरी का उपयोग करने का एक उदाहरण दिया गया है: http://stackoverflow.com/questions/16626612/keypair-login-to-ec2-instance-with-jsch – Scott