我正在自动将身份验证密钥上传到多个 ssh 主机,并且我想避免每次执行脚本时都将密钥添加到 authorized_keys,因此我在上传密钥之前检查 ssh 是否可以连接密钥身份验证。
问题是脚本在用户已经拥有密钥的第一台服务器上停止循环。
该脚本根据来自 bash/ssh 测试的建议尝试密钥身份验证以进行公钥身份验证
while read SERVER; do
CONN="$USER@$SERVER"
echo "$CONN: "
ssh -q -o "BatchMode yes" $CONN 'true'
RC=$?
if [[ $RC -ne 0 ]]
then
echo "key auth did not succeed, trying to uploading key:"
../ssh-uploadkeys/ssh-uploadkeys $CONN
else
echo "key auth ok, no need to upload key"
fi
done < servers.txt
这输出:
myusername@the.host.com:
key auth ok, no need to upload key
服务器.txt:
the.host.com
another.host.com
the.ghost.com
我的脚本使用的 ssh-uploadkeys 脚本由 Tero Karvinen 编写:http ://terokarvinen.com/ssh-uploadkeys.html