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

Bash 如何避免在shell脚本中向ssh主机重复输入密码?,bash,shell,ssh,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 S

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

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,但它仍然要求我在执行过程中为同一主机输入三次密码


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

您可以使用
ssh-agent
以及带有密码短语的公钥/私钥对
ssh代理
“解锁”用户会话期间的私钥,密码片语给出一次。正确的设置取决于你的平台,所以你需要寻找一个教程

StrictHostKeyChecking与密码无关。这意味着检查远程主机是否位于已知的\u主机中和/或自上次登录以来是否更改了身份。打开它,并完全禁用已知主机,可能是个坏主意