shell脚本实现ssh自动登陆
必要软件包:expect
ssh连接远程主机时候会询问密码,跟su、sudo命令的默认行为一样,是不从stdin读入数据的,传说是为安全考虑,但是有时候在脚本当中确实需要无人守值的登陆。
搜索一下不难找到类似的例子,使用expect来完成密码应答:
#!/bin/bash auto_login_ssh () { expect -c "set timeout -1; spawn -noecho ssh -o StrictHostKeyChecking=no $2 ${@:3}; expect *assword:*; send -- $1\r; interact;"; } auto_login_ssh password user@host |
StrictHostKeyChecking=no参数让ssh默认添加新主机的公钥指纹,也就不会出现出现是否继续yes/no的提示了。
上述expect代码基本可以达到要求了,可实现自动登录