2009-06-15 14 views
0

In Net::SCP an welchem ​​Punkt brauche ich DSC oder RSA-Schlüssel (d. H. Wann verwende ich die Get oder Put-Funktionen) ?. Ich würde gerne wissen, dass der scp-Dienst verfügbar ist, ohne die Datei zu übertragen.Wie kann ich feststellen, ob scp von Perl verfügbar ist?

+0

Die Frage scheint seltsam bekannt. Mochten Sie nicht die Antworten, die Sie hier bekommen haben: http://stackoverflow.com/questions/985551/how-can-i-detect-if-scp-service-is-available-at-remote-host-with-out -senden-das? – innaM

+0

Die Antwort ändert sich nicht, wenn Sie dieselbe Frage dreimal stellen. –

+1

Sind Sie sicher? Beobachten, wie meine Kinder mit ihrer Mutter interagieren, widerspricht Ihrer Aussage ... – lexu

Antwort

3

Per the docs in CPAN, müssen Sie es, bevor Sie selbst Import das Modul, und ich zitieren:

„““ F: Wie liefern Sie ein Passwort mit ssh mit dem Net innerhalb einer Perl-Skript zu verbinden :: SSH-Modul

A:?... Sie nicht verwenden RSA- oder DSA-Schlüssel finden Sie in den ssh-keygen (1) manpage

""“

Mit anderen Worten: NET::SCP wurde für die Verwendung mit "passwortloser" SSH-Authentifizierung über vorgenerierte und propagierte private/öffentliche Schlüsselpaare entwickelt.

+0

Sie zitieren Net :: SCP 0.07; Die 0,08 Dokumente fügen hinzu: A # 2: Siehe Net :: SCP :: Expect stattdessen. – ysth

1

Da Net::SCP ein Wrapper für scp ist, müssen Sie die Schlüssel für das Skript nicht (dh Sie können nicht) angeben. Sie (oder eine andere Person) müssen das Setup ausführen, indem Sie ssh konfigurieren, bevor Sie es verwenden.

NET :: SCP ist nicht zur Verwendung "ad hoc" gedacht. Es erfordert ssh-Konfiguration und den Austausch von Schlüsseln.

EDIT integriert ysth Kommentar

+0

scp kann sicherlich ad hoc verwendet werden, mit der Aufforderung für Passwörter. Vielleicht meintest du "Net :: SCP ist nicht gemeint ..." – ysth

+0

yepp .. das ist was ich meinte .. Ich werde meine Antwort reparieren, thx! – lexu

1

Wenn alles, was Sie, wenn das Remote-System überprüfen wollen, auf dem ssh/scp Port lauscht, können Sie Pingen versuchen:

use Net::Ping; 
$p = Net::Ping->new("tcp", 2); 
$p->port_number(scalar(getservbyname("ssh", "tcp"))); 
if ($p->ping($hostname)) { 
    print "ok!"; 
} 

Sie Net verwenden können :: SSH oder Net :: SSH :: Expect oder Net :: SSH2 oder Net :: SSH :: Perl, wenn Sie Schlüssel oder Passwort haben und überprüfen möchten, ob Sie eine Verbindung herstellen können, ohne tatsächlich irgendwelche Dateien zu übertragen.

1

Wenn Sie SSH mit Kennwortauthentifizierung verwenden möchten, berücksichtigen Sie Net::SSH::Perl.

Verwandte Themen