您是否可以建议一种方法来检测服务器上的scp服务是否可用而无需帐户和/或密码?
我想弄明白如何判断
Net::SCP->new( "hostname", "username" );
由于远程主机上的服务不可用,功能无法连接到远程 或者因为身份验证失败。
答案 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正在运行时,请检查以下内容:
路线好吗?尝试
ping host.example.com
host.example.com上的hosts.allow文件是否设置为允许连接? 如果您使用DNS,它必须能够解析传入连接 名。
host.example.com上是否有防火墙运行?尝试
iptables -L
在Linux上或检查Windows上的防火墙。