我使用SSH密钥交换连接了两台服务器。现在我可以在没有密码的情况下登录远程服务器。
现在,我想验证连接是否真的没有密码。我怎么能这样做?
我尝试了以下方法,其中SSH应在10秒后超时,我将捕获其返回代码。但它永远不会。一旦超时。它保留在密码提示符下。
ssh -o ServerAliveInterval=10 -o ConnectTimeout=15 user@ip.ip.ip.ip exit
if [ "$?" -ne 0 ];then
echo "SSH keys no more working,you need to initiate keys exchange again!!"
exit 1;
fi
然而,当SSH密钥不工作时,它永远不会超时并保持密码提示。所以无法捕获返回代码。
ssh -o ServerAliveInterval=10 -o ConnectTimeout=15 user@ip.ip.ip.ip exit
Enter Windows password:
当我提供不可ping的IP地址时,此approch可以正常工作。
ssh -o ServerAliveInterval=10 -o ConnectTimeout=15 user@ip1.ip1.ip1.ip1 exit
ssh: connect to host ip1.ip1.ip1.ip1 port 22: Connection timed out
在确定SSH连接是否无密码工作方面需要帮助。
答案 0 :(得分:1)
您可以使用PasswordAuthentication=no
禁用密码身份验证。当pubkey身份验证失败时,它将立即失败。
ssh -o BatchMode=yes -o ConnectTimeout=15 user@ip.ip.ip.ip exit
编辑:使用BatchMode
肯定会有用。