我的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