Thread Net::SSH2 mit passwort geschützter public key authentication (9 answers)
Opened by br0tkasten at 2009-12-14 15:47

br0tkasten
 2009-12-14 15:47
#129351 #129351
User since
2009-07-22
6 Artikel
BenutzerIn
[default_avatar]
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
# ./key-auth.pl
* connected
DEBUG - post authentication


Über Ideen/Anregungen/alternative Module bin ich sehr dankbar.

mfg
bk

View full thread Net::SSH2 mit passwort geschützter public key authentication