如何在没有发送文件的情况下检测远程主机上的scp服务是否可用?

时间:2009-06-12 08:07:55

标签: perl scp

您是否可以建议一种方法来检测服务器上的scp服务是否可用而无需帐户和/或密码?

我想弄明白如何判断

 Net::SCP->new( "hostname", "username" );
由于远程主机上的服务不可用,

功能无法连接到远程 或者因为身份验证失败。

4 个答案:

答案 0 :(得分:5)

sshd将在端口22上运行。远程登录它以查看它是否正在响应。

要检查服务器而不对其进行编码,请在命令行中键入:

telnet host.example.com 22

如果ssh服务可用,响应将如下所示:

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

如果没有,你会看到:

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

答案 1 :(得分:1)

Net :: SCP不使用密码,除非您使用的是交互模式,它使用RSA或DSA密钥。在使用get()或put()时,这些函数将在成功或失败时返回true或false。

如果您需要使用密码而不是密钥身份验证,您可能希望查看Net :: SCP :: Expect。两个模块的perldoc都有很好的例子可供使用。

答案 2 :(得分:1)

使用Net :: SSH2或Net :: OpenSSH而不是Net :: SCP

答案 3 :(得分:0)

Chadwick上面说的是正确的,但当你认为它应该有效并且sshd正在运行时,请检查以下内容:

  1. 路线好吗?尝试

    ping host.example.com
    
  2. host.example.com上的hosts.allow文件是否设置为允许连接? 如果您使用DNS,它必须能够解析传入连接 名。

  3. host.example.com上是否有防火墙运行?尝试

    iptables -L
    

    在Linux上或检查Windows上的防火墙。