Thread Net::SSH2 mit passwort geschützter public key authentication
(9 answers)
Opened by br0tkasten at 2009-12-14 15:47
Hallo Leute,
stell mich grade irgendwie ziemlich blöde an. Möchte ein Skript schreiben das sich an einem entfernten Rechner via SSH anmeldet und Befehle ausführt. Authentication über Benutzername/Passwort oder public key ohne Passwort funktionieren ohne Probleme. Für den Produktiveinsatz würde ich den private key aber gerne mit einem Passwort schützen. Die Methode auth_publickey aus dem Modul Net::SSH2 sieht scheinbar für diesen Fall bereits den optionalen Parameter 'password' vor. Versuche ich aber einen Passwort geschützten private key mit der Methode auth_publickey zu laden, bleibt das Script anschließend hängen. In diesem Fall erscheint kein Eintrag in den Logs des sshd auf dem remote Rechner. Ich schließe daraus, dass die Authentifizierung fehlgeschlagen ist. Hier mal mein Code Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 #!/usr/bin/perl use Net::SSH2; my $IP = "192.168.1.2"; my $PRIVKEY = "/home/user/.ssh/id_rsa"; my $PUBKEY = "/home/user/.ssh/id_rsa.pub"; my $USER = "remoteUser"; my $PASS = "mySecretPassphrase"; my $ssh = Net::SSH2->new(); $ssh->connect($IP) or die("connect(): $!\n"); print " * connected\n"; $ssh->auth_publickey($USER,$PUBKEY,$PRIVKEY,$PASS); print "DEBUG - post authentication\n"; print " * authenticated\n" if($ssh->auth_ok); my $channel = $ssh->channel() or die("channel(): $!\n"); print " * got channel\n"; $channel->shell(); print " * got shell\n"; print $channel "ls -a\n"; while(<$channel>) { print ">$_<"; } $channel->close() Ausgabe ist hier lediglich: Quote Über Ideen/Anregungen/alternative Module bin ich sehr dankbar. mfg bk |