我正在自动将auth密钥上传到多个ssh主机,并且我希望每次执行脚本时都避免将密钥添加到authorized_keys,因此我检查ssh是否可以在上传密钥之前连接密钥身份验证。
问题是脚本在用户已有密钥的第一台服务器上停止循环。
该脚本根据bash/ssh test for public key authentication
的建议尝试进行密钥验证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
servers.txt:
the.host.com
another.host.com
the.ghost.com
我的脚本使用的ssh-uploadkeys脚本由Tero Karvinen编写:http://terokarvinen.com/ssh-uploadkeys.html
答案 0 :(得分:1)
将-n
选项添加到ssh
以防止它从标准输入读取。发生的事情是ssh
正在使用您的servers.txt
文件,因此while循环在第一行之后终止,因为它没有任何内容可供阅读。