通过bash脚本后台执行对远程机器的操作时, 执行过程没有报错和其他提示信息, 执行之后却发现根本没有成功执行。其中一个原因就是没有加认证。 最简单的解决办法就是忽略认证, 做法是添加"-o StrictHostKeyChecking=no"
如以下命令:
sshpass -p "$password" scp -o StrictHostKeyChecking=no xxx user_name@ip:xxx
其实进一步挖掘一下, 不用脚本执行, 在前台单独执行的时候是有一些提示信息的, 如下:
root@test-performancetest-world-apigw-1:~# ssh pi@10.9.15.69
The authenticity of host '10.9.15.69 (10.9.15.69)' can't be established.
ECDSA key fingerprint is SHA256:puFquOIiGlYWUsoPQZaY+Dn6PPq46YtqrgJLQwsvdBY.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.9.15.69' (ECDSA) to the list of known hosts.
pi@10.9.15.69's password:
提示需要认证。 只不是脚本在后台执行的时候没有这个提示信息, 误认为没有问题, 其实脚本是没有执行成功的。
添加"o StrictHostKeyChecking=no"后再执行脚本, 会有如下提示信息:
Warning: Permanently added '10.9.15.69' (ECDSA) to the list of known hosts.