(一)现在有两台机器,
客户机:192.168.1.100
服务器:192.168.1.111
(二)需求:
想实现在100机器上直接ssh登录到111机器上,在ssh登录过程中不需要输入ssh用户登录密码。
(三)具体操作如下:
注意:
(提示:下面在生成私钥和公钥的时候直接按回车键,否则后面还将要求输入密码,会很麻烦)
第一步:在192.168.1.100机器上,执行如下命令:
[root@localhost ~]# ssh-keygen -trsa
Generating public/private rsa key pair.
Enter file in which to save the key(/root/.ssh/id_rsa):
/root/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for nopassphrase): (不输入密码)
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:
db:3b:ea:40:e1:ef:35:e4:88:19:b8:23:d0:b6:d7:8aroot@localhost.localdomain
第二步:同步公钥到从服务器(192.168.1.111)<这步可以省略>
[root@localhost~]#scp~/.ssh/id_rsa.pub root@192.168.1.111:/root/
第三步:追加公钥串到服务器(192.168.1.111)authorized_keys文件中
[root@localhost ~]#ssh 192.168.1.111 ///登录到服务器192.168.1.111
[root@localhost ~]# cat/root/id_rsa.pub >> /root/.ssh/authorized_keys
//追加公钥串到authorized_keys文件中。
第四步:退出192.168.1.111服务器
[root@localhost~]# exit
第五步:在192.168.1.100服务器上测试命令:
ssh 192.168.1.111 “mkdir qq”
第六步:不需要登录服务器即可生成文件夹:qq
ssh 192.168.1.111“ls /”
直接列出192.168.1.111服务器的root根目录的列表
在从服务器进行公钥互换即可实现双服务器无密码执行命令;
提示:不能在主服务器上再次执行:ssh-keygen –t rsa命令,否则失效
*****************************************************************************************************************************************************************
【1】实现原理:
在本机A上执行“ssh-keygen -b 1024 -t rsa”命令,就会生成公钥证书“id_rsa.pub”,自动生成到路径[/home/A-user/.ssh/]下面,
然后在远程机器B的路径/home/B-user/.ssh/下新建文件“authorized_keys”,
然后将机器A上已生成的公钥证书[/home/A-user/.ssh/id_rsa.pub]中的文字内容copy到机器B的文件“authorized_keys”里面即可。
【2】远程免密码ssh登录过程:
在本机A上执行“ssh B-user@B-IP”命令,此时Linux系统就会在机器B的/home/B-user/.ssh/authorized_keys文件中进行每个公钥串的检索,
将检索结果分别和本机A的公钥证书[/home/A-user/.ssh/id_rsa.pub]中的公钥串内容进行比较,如果相同,即可成功实现 本机A 免密码ssh 登录到 机器B。
【3】举一反三:
假如要想在机器X、机器Y、机器Z、机器W间均实现任意两台机器间均可以非输入密码进行登录,应该如何操作?
具体操作方法:
步骤1:分别在机器X、机器Y、机器Z、机器W执行“ssh-keygen -b 1024 -t rsa”命令,生成公钥证书“id_rsa.pub”;
步骤2:分别将机器X、机器Y、机器Z、机器W的公钥证书“id_rsa.pub”内容全部粘贴到新建文件“authorized_keys”中;
步骤3:将新建文件“authorized_keys”分别复制到机器X、机器Y、机器Z、机器W的/home/userX/.ssh/下即可;
*****************************************************************************************************************************************************************
【补充】如果使ssh公钥生效需满足至少下面两个条件:
1) .ssh目录的权限必须是700
2) .ssh/authorized_keys文件权限必须是600