ich den folgenden Code haben (natürlich ersetzt ich myremoteserver.com):Difference mit Net :: SSH :: Perl auf Perl 5.12 und 5.14
use Modern::Perl;
use Net::SSH::Perl;
use Data::Dumper;
my $ssh = Net::SSH::Perl->new('myremoteserver.com', debug => 1, port => 2999);
$ssh->login('root');
print Dumper $ssh->cmd('uptime');
Auf einem Keyless-Umgebung, ich laufe es sowohl auf Perl 5.12 und 5.14.
auf 5,12 Perl scheint es zu funktionieren:
$ perl5.12 /tmp/sshtest.pl
ko.local: Reading configuration data /Users/david/.ssh/config
ko.local: Reading configuration data /etc/ssh_config
ko.local: Connecting to myremoteserver.com, port 2999.
ko.local: Remote protocol version 2.0, remote software version OpenSSH_5.8p1 Debian-1ubuntu3
Math::BigInt: couldn't load specified math lib(s), fallback to Math::BigInt::Calc at /opt/local/lib/perl5/site_perl/5.12.3/Crypt/DH.pm line 6
ko.local: Net::SSH::Perl Version 1.34, protocol version 2.0.
.o.local: No compat match: OpenSSH_5.8p1 Debian-1ubuntu3
ko.local: Connection established.
ko.local: Sent key-exchange init (KEXINIT), wait response.
ko.local: Algorithms, c->s: 3des-cbc hmac-sha1 none
ko.local: Algorithms, s->c: 3des-cbc hmac-sha1 none
ko.local: Entering Diffie-Hellman Group 1 key exchange.
ko.local: Sent DH public key, waiting for reply.
ko.local: Received host key, type 'ssh-dss'.
ko.local: Host 'myremoteserver.com' is known and matches the host key.
ko.local: Computing shared secret key.
ko.local: Verifying server signature.
ko.local: Waiting for NEWKEYS message.
ko.local: Send NEWKEYS.
ko.local: Enabling encryption/MAC/compression.
ko.local: Sending request for user-authentication service.
ko.local: Service accepted: ssh-userauth.
ko.local: Trying empty user-authentication request.
ko.local: Authentication methods that can continue: publickey.
ko.local: Next method to try is publickey.
ko.local: Publickey: testing agent key '/Users/david/.ssh/github_rsa'
ko.local: Authentication methods that can continue: publickey.
ko.local: Next method to try is publickey.
Permission denied at /tmp/sshtest.pl line 9
Aber auf Perl 5.14:
$ perl5.14 /tmp/sshtest.pl
ko.local: Reading configuration data /Users/david/.ssh/config
ko.local: Reading configuration data /etc/ssh_config
ko.local: Connecting to myremoteserver.com, port 2999.
ko.local: Remote protocol version 2.0, remote software version OpenSSH_5.8p1 Debian-1ubuntu3
ko.local: Net::SSH::Perl Version 1.34, protocol version 2.0.
.o.local: No compat match: OpenSSH_5.8p1 Debian-1ubuntu3
ko.local: Connection established.
ko.local: Sent key-exchange init (KEXINIT), wait response.
ko.local: Algorithms, c->s: 3des-cbc hmac-sha1 none
ko.local: Algorithms, s->c: 3des-cbc hmac-sha1 none
ko.local: Entering Diffie-Hellman Group 1 key exchange.
ko.local: Sent DH public key, waiting for reply.
ko.local: Received host key, type 'ssh-dss'.
ko.local: Host 'myremoteserver.com' is known and matches the host key.
ko.local: Computing shared secret key.
ko.local: Verifying server signature.
Key verification failed for server host key at /opt/local/lib/perl5/site_perl/5.14.1/Net/SSH/Perl/SSH2.pm line 92
Der einzige Unterschied, den ich sehe, ist Math :: BigInt eine Warnung zurück auf Perl 5.12.
Einige Debug-Info:
~ $ perl5.12 -MNet::SSH::Perl -e 'print $Net::SSH::Perl::VERSION, "\n";'
1.34
~ $ perl5.14 -MNet::SSH::Perl -e 'print $Net::SSH::Perl::VERSION, "\n";'
1.34
~ $ perl5.12 -MMath::BigInt -e 'print $Math::BigInt::VERSION, "\n";'
1.997
~ $ perl5.14 -MMath::BigInt -e 'print $Math::BigInt::VERSION, "\n";'
1.997
Jede Idee, was das Problem hier?
Ist der Client auf zwei verschiedenen Maschinen? Basierend auf dieser Ausgabe versagen beide. Obwohl 5.14 auf dem Host-Schlüssel fehlschlägt, nicht Ihr öffentlicher Schlüssel. Loggen Sie sich manuell mit Ihrem ssh-Client in der Befehlszeile ein und es sollte Ihnen sagen, dass es eine Zeile in known_hosts gibt, die nicht mit dem übereinstimmt, was der Server sendet. Sie können diese Zeile löschen und erneut anmelden und den neuen Schlüssel speichern. In der Regel passiert dies aufgrund einer IP-Änderung. – Cfreak
Dies ist die gleiche Maschine, die dieselbe Umgebung ohne Schlüssel verwendet. Ich habe vergessen darauf hinzuweisen, dass das Problem wirklich nicht ist, dass 5.12 mit verweigerter Berechtigung endet. Das eigentliche Problem ist, dass die 5.14-Perl-Version mit "Key Verification failed für Server-Host-Schlüssel bei /opt/local/lib/perl5/site_perl/5.14.1/Net/SSH/Perl/SSH2.pm Zeile 92" fehlschlägt im Gegensatz zu 5.12 Version o__O – damog
Vielleicht ein Problem mit Math :: BigInt? Seufzer. – damog