2009-06-12 7 views
2

アカウントやパスワードを必要とせずにサーバー上でscpサービスを利用できるかどうかを検出する方法を提案してください。私はファイルを送信せずにリモートホストでscpサービスを利用できるかどうかを検出するにはどうすればよいですか?

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

機能があるため、サービスのリモートへの接続に失敗した場合に伝えるためにどのように把握しようとしています

は リモートホストで使用できないため、または認証失敗です。

答えて

5

sshdはポート22で実行されています。応答があるかどうかを確認するためにTelnetします。場合

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

:何かをコーディングせずにサーバーをチェックする

は、コマンドラインで、タイプ:SSHサービスが利用可能な場合

telnet host.example.com 22 

、応答は次のようになりますそうでない場合は、表示されます:

Trying host.example.com... 
telnet: Unable to connect to remote host: Connection refused 
1

Net :: SCPは、アクティブモードでは、RSAまたはDSAキーを使用します。 get()またはput()を使用する時点で、それらの関数は成功または失敗時にtrueまたはfalseを返します。

キー認証ではなくパスワードを使用する必要がある場合は、代わりにNet :: SCP :: Expectをチェックしてください。両方のモジュールのperldocには良い例があります。

1

使用のネット:: SSH2またはネット::代わりにネットのOpenSSHの:: SCP

0

チャドウィックは、上記の正しい、それを持っていますが、あなたはそれが動作するはずだと思うときにsshdが実行されている、次の点を確認してください。

  1. 経路OK?試してみてください

    ping host.example.com 
    
  2. hosts.allowは接続を許可するように設定されていますか? DNS の名前を使用する場合は、着信接続を解決する必要があります。

  3. host.example.com上でファイアウォールが動作していますか? Linuxの場合は

    iptables -L 
    

    を試してください。Windowsではファイアウォールを確認してください。

関連する問題