使用SSH密钥验证SSH连接

时间:2016-06-24 05:28:09

标签: bash security ssh ip

我使用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

案例-I

然而,当SSH密钥不工作时,它永远不会超时并保持密码提示。所以无法捕获返回代码。

ssh -o ServerAliveInterval=10 -o ConnectTimeout=15 user@ip.ip.ip.ip exit
Enter Windows password:

情况下-II

当我提供不可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连接是否无密码工作方面需要帮助。

1 个答案:

答案 0 :(得分:1)

您可以使用PasswordAuthentication=no禁用密码身份验证。当pubkey身份验证失败时,它将立即失败。

ssh -o BatchMode=yes -o ConnectTimeout=15 user@ip.ip.ip.ip exit

编辑:使用BatchMode肯定会有用。