如何调用 ssh,使其仅使用标识文件



我的SSH服务器同时使用密码和身份文件身份验证。我不想改变这种行为。

我想检查服务器(的用户)是否知道$THE_IDENTITY文件。

这就是我使用此代码的原因:

echo "Check if server knows the SSH identity:"
if [ "$(ssh user@host -i  ${SSH_ID_FILE} echo 'hello')" == 'hello' ]; then
    echo "Server already knows me"
else
    echo "Registering SSH ID Key to the server..." 
    ssh-copy-id -i $SSH_ID_FILE "user@host"
fi

但是,问题是,在"if"语句中,如果服务器不知道ID文件,它会要求输入密码,这就是我的代码工作错误的原因。

如何更改我的 ssh 行以使其在 id 文件失败时退出?

以下方法可以解决问题:

ssh user@host -o NumberOfPasswordPrompts=0 -i .....

有一个关键字选项可以告诉ssh不要使用密码身份验证:

ssh user@host -o PasswordAuthentication=no ...

在Unix系统上,所有关键字选项的详细信息可以通过以下方式找到:

man ssh_config

相关内容

  • 没有找到相关文章

最新更新