【发布时间】:2015-02-14 17:36:30
【问题描述】:
最好的方法是什么:
我想用pscp(从本地Windows机器)或sshpass(从本地Unix机器)将文件发送到不同的远程机器到随机的远程机器。
如果本地机器有pscp 或sshpass,我先用Java 方法检查。
然后我想检查远程机器是否有 SSH 可用。
后者的最佳方法是什么?
我曾考虑过为此使用 JSch,但这是否不需要远程计算机上存在 SSH?
一般来说这是一个好方法吗?
【问题讨论】:
最好的方法是什么:
我想用pscp(从本地Windows机器)或sshpass(从本地Unix机器)将文件发送到不同的远程机器到随机的远程机器。
如果本地机器有pscp 或sshpass,我先用Java 方法检查。
然后我想检查远程机器是否有 SSH 可用。
后者的最佳方法是什么?
我曾考虑过为此使用 JSch,但这是否不需要远程计算机上存在 SSH?
一般来说这是一个好方法吗?
【问题讨论】:
远程测试 SSH 存在的唯一方法是实际尝试连接。
从技术上讲,测试远程 SSH 端口 22 是否打开。在 Java 中,只需检查以下语句是否抛出异常:
new Socket(address, 22).close();
您甚至可以更进一步,从套接字中读取以检查您是否获得了 SSH 标识字符串,例如“SSH-2.0-OpenSSH_5.3”。
尝试与 JSch 建立联系也可以。您只需确保可以将“无法连接”错误与“无法验证”等任何其他错误区分开来(这表明存在 SSH)。
【讨论】: