如何在docker上运行-o StrictHostKeyChecking=no的ssh,以便在不退出脚本执行的情况下对主



我有一个脚本,它在docker容器中运行,我们需要执行一些内部调试操作:

set -eu
echo "Starting i/o test for host"
IP_HOST=$(ip a | grep -oE "b([0-9]{1,3}.){3}[0-9]{1,3}b" | grep 172.17 | awk 'NR==1{print $1}')
echo "Detected IP of host is $IP_HOST"
sshpass -p tcuser ssh -o StrictHostKeyChecking=no docker@localhost -t -t
echo "Then"

这里的输出正好产生:

bash-5.0# sh /etc/cron.d/iotesthost.sh
Mon Mar  2 12:43:59 UTC 2020
Starting i/o test for host
Detected IP of host is 172.17.0.1
Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
( '>')
/) TC (   Core is distributed with ABSOLUTELY NO WARRANTY.
(/-_--_-)           www.tinycorelinux.net

当到达最后一行时,脚本使我退出bashcrond执行。所以我无法在sshpass/ssh之后继续处理其他行,所以我永远无法达到echo "Then"

这就是退出脚本执行以及如何处理它的原因,仍然保留接受密钥的所有功能(我需要的是每次docker容器调用脚本时都是新的(

如果我忽略-t -t,根据https://stackoverflow.com/a/7122115/1759063

请参阅https://askubuntu.com/questions/87449/how-to-disable-strict-host-key-checking-in-ssh

echo "StrictHostKeyChecking no" >> /etc/ssh_config

全球解决方案。请注意,届时将不再进行安全检查。

最新更新