ssh 自动登录脚本

ssh 一般要输入密码,自动设置的方法有两个:
1.通过expect来建立
#!/usr/bin/expect -f # expect在哪个目录下用whereis找下,不同的系统expect安装路径不一样的,如果#没有安装在安装光盘里有的
set timeout -1
spawn ssh -l user_name host_name/ip
expect "password: "
send "your_password "
interact  #用exact这个指令是为了把控制权交给用户,来开始远程作业
 
注意:
     1.因为这个文件里边涉及到用户名和密码所以要设置好用户的权限除了用户本人不要让任何人读他或者是建立个密码文件
     2.expect 脚本虽然也是脚本但是不能用sh 这个指令去执行,而一般shell脚本可以用sh来执行,否则会文件不可读的报错信息
 
2.ssh密钥
如果在A(192.168.2.11)机上实现登陆B(192.168.2.12)机免密码那么在A机上执行下边的指令
ssh-keygen -t rsa 然后全部回车 使用默认设置
那样在用户家目录下会有个.ssh/id_rsa .ssh/id_rsa.pub 把~/.ssh/id_rsa.pub传到b机上
scp ~/.ssh/id_rsa.pub username@192.168.2.12:/dir_name
登陆到192.168.2.12
cat $dir_name/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
结束后就可以在192.168.2.11 上用ssh免密码登陆192.168.2.12
 
PS:如果不能成功登陆那么,就要检查下权限问题及selinux及iptables
       尽量不要用复制粘贴的方式,直接用文件覆盖
原文地址:https://www.cnblogs.com/fvsfvs123/p/4349972.html