我的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文件,它要求输入密码,这就是我的代码工作错误的原因。
如果使用id文件失败,如何更改我的ssh行以使其退出?
答案 0 :(得分:1)
以下可能会做到这一点:
ssh user@host -o NumberOfPasswordPrompts=0 -i .....
答案 1 :(得分:0)
有一个关键字选项告诉ssh不要使用密码验证:
ssh user@host -o PasswordAuthentication=no ...
在Unix系统上,可以通过以下方式找到所有关键字选项的详细信息:
man ssh_config