gpt4 book ai didi

bash - 为什么 ssh 会中止我的 bash 脚本?

转载 作者:行者123 更新时间:2023-12-02 14:38:38 25 4
gpt4 key购买 nike

我正在自动将身份验证 key 上传到多个 ssh 主机,并且我想避免每次执行脚本时都将 key 添加到 authorized_keys,因此我在上传 key 之前检查 ssh 是否可以连接 key 身份验证。

问题是脚本在用户已经拥有 key 的第一台服务器上停止循环。

该脚本根据来自 bash/ssh test for public key authentication 的建议尝试 key 验证。

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

最佳答案

添加 -n ssh 的选项以防止它从标准输入读取。发生的事情是 ssh正在消耗您的 servers.txt文件,因此 while 循环在第一行之后终止,因为没有任何内容可供读取。

关于bash - 为什么 ssh 会中止我的 bash 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19591452/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com