如何调用ssh所以它只会使用身份文件

时间:2014-02-11 10:24:05

标签: bash 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文件,它要求输入密码,这就是我的代码工作错误的原因。

如果使用id文件失败,如何更改我的ssh行以使其退出?

2 个答案:

答案 0 :(得分:1)

以下可能会做到这一点:

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

答案 1 :(得分:0)

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

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

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

man ssh_config