假设 A (192.168.20.59)为客户机器,B(192.168.20.60)为目标机;
要达到的目的: A机器ssh登录B机器无需输入密码; 加密方式选 rsa|dsa均可以,默认dsassh-keygen -t rsa #使用rsa加密
二、具体操作流程
单向登陆的操作过程(能满足上边的目的):
1、登录A机器 2、ssh-keygen -t [rsa|dsa],将会生成密钥文件和私钥文件 id_rsa,id_rsa.pub或id_dsa,id_dsa.pubGenerating public/private rsa key pair.Enter file in which to save the key (/root/.ssh/id_rsa): [直接回车即可]Enter passphrase (empty for no passphrase): [若要建立无密码的ssh信任关系,这里直接回车!否则建立信任关系后,每次登陆远程机器均要求输入该密码]Enter same passphrase again: [直接回车]Your identification has been saved in /root/.ssh/id_rsa.Your public key has been saved in /root/.ssh/id_rsa.pub.The key fingerprint is:b4:de:66:2c:c1:04:ad:7c:48:7c:f7:94:71:09:85:21 usr1@localhost
3、在B机创建目录:mkdir /root/.ssh
将 .pub 文件复制到B机器的 .ssh 目录, 并
cat /root/.ssh/id_dsa.pub >> /root/.ssh/authorized_keys
或者
cat /root/.ssh/id_rsa.pub | ssh root@192.168.20.60 'cat >> /root/.ssh/authorized_keys'
4、大功告成,从A机器登录B机器的目标账户,不再需要密码了;(直接运行 #ssh 192.168.20.60 )双向登陆的操作过程:
1、ssh-keygen做密码验证可以使在向对方机器上ssh ,scp不用使用密码.具体方法如下:
2、两个节点都执行操作:#ssh-keygen -t rsa 然后全部回车,采用默认值. 3、这样生成了一对密钥,存放在用户目录的/root/.ssh下。将公钥考到对方机器的用户目录下 ,并将其复制到/root/.ssh/authorized_keys中(操作命令:#cat /root/.ssh/id_dsa.pub >> /root/.ssh/authorized_keys )。 4、设置文件和目录权限:设置authorized_keys权限
$ chmod 600 authorized_keys 设置.ssh目录权限 $ chmod 700 -R .ssh5、要保证.ssh和authorized_keys都只有用户自己有写权限。否则验证无效。(今天就是遇到这个问题,找了好久问题所在),其实仔细想想,这样做是为了不会出现系统漏洞。
远程执行脚本示例:
1、在A机创建脚本:
$ vi test.sh
#!/bin/bashecho "shell start"ssh root@192.168.20.60 "sh /home/script/hello.sh"
2、在B机创建脚本
$ vi /home/script/hello.sh
#!/bin/bashecho "hello"
3、在A机运行脚本test.sh
$ sh test.sh
shell starthello