如何避免在shell脚本中向ssh主机输入重复密码?

时间:2014-07-30 00:43:07

标签: bash shell ssh

我正在编写一个脚本来在服务器端进行一些更改。

for HOST in ${WORKER_HOSTS}; do
    echo ${HOST}
    ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ${HOST} "doSomething"
done

Do something locally

for HOST in ${WORKER_HOSTS}; do
    echo ${HOST}
    ssh -o StrictHostKeyChecking=no  -o UserKnownHostsFile=/dev/null ${HOST} "doSomething"
done

Do something locally

for HOST in ${WORKER_HOSTS}; do
    echo ${HOST}
    ssh -o StrictHostKeyChecking=no  -o UserKnownHostsFile=/dev/null ${HOST} "doSomething"
done

虽然我已将StrictHostKeyChecking设置为no,但它仍然要求我在执行期间为同一主机执行三次密码输入。

有没有办法避免重复输入相同主机的密码?

1 个答案:

答案 0 :(得分:1)

您可以使用ssh-agent以及带密码的公钥/私钥对。 ssh-agent"解锁"在密码短语给出一次后,用户会话期间的私钥。正确的设置取决于您的平台,因此您需要查找教程。

StrictHostKeyChecking与密码无关。这意味着检查远程主机是否在known_hosts中和/或自上次登录后是否已更改身份。启用它并完全禁用已知主机可能是一个坏主意。