2009-06-12 1 views
2

Könnten Sie bitte einen Weg vorschlagen, um festzustellen, ob der scp-Dienst auf einem Server verfügbar ist, ohne ein Konto und/oder ein Passwort zu benötigen?Wie kann ich feststellen, ob der scp-Dienst auf dem entfernten Host verfügbar ist, ohne die Datei gesendet zu haben?

Ich versuche, herauszufinden, wie wenn

sagen
Net::SCP->new("hostname", "username"); 

Funktion wegen Dienst remote Verbindung herstellen kann bei Remote-Host nicht verfügbar ist oder wegen Authentifizierungsfehler.

Antwort

5

sshd würde auf Port 22 laufen. Telnet dazu, um zu sehen, ob es antwortet.

Um den Server zu überprüfen, ohne etwas Codierung auf, in der Befehlszeile ein:

telnet host.example.com 22 

Wenn der SSH-Dienst verfügbar ist, wird die Antwort in etwa so aussehen:

Trying host.example.com... 
Connected to host.example.com. 
Escape character is '^]'. 
SSH-2.0-OpenSSH_5.1p1 Debian-5ubuntu1 

Wenn nicht, Sie werden sehen:

1

Net :: SCP verwendet keine Passwörter, es sei denn, Sie verwenden die Inter aktiven Modus verwendet es RSA- oder DSA-Schlüssel. An dem Punkt, an dem Sie get() oder put() verwenden, geben diese Funktionen bei Erfolg oder Misserfolg ein wahr oder falsch zurück.

Sie können Net :: SCP :: Expect stattdessen ausprobieren, wenn Sie anstelle der Schlüsselauthentifizierung Kennwörter verwenden müssen. Das Perloc für beide Module hat gute Beispiele zu folgen.

1

Verwendung Net :: SSH2 oder Net :: OpenSSH statt Net :: SCP

0

Chadwick hat es oben richtig, aber wenn Sie denken, es sollte funktionieren und sshd läuft, dann prüfen Sie folgendes:

  1. Route OK? Versuchen

    ping host.example.com 
    
  2. Ist hosts.allow Datei auf host.example.com stellen Sie die Verbindung ermöglichen? Es muss in der Lage sein, die eingehende Verbindung aufzulösen, wenn Sie DNS Namen verwenden.

  3. Gibt es auf host.example.com eine Firewall? Versuchen Sie

    iptables -L 
    

    unter Linux oder überprüfen Sie die Firewall unter Windows.