Linux服务器之间交互实现无密码交互
原创
©著作权归作者所有:来自51CTO博客作者已注销的原创作品,请联系作者获取转载授权,否则将追究法律责任
分享知识 传递快乐
服务器A:192.168.1.1
服务器B:192.168.1.2
场景:服务器A(192.168.1.1)访问服务器B(192.168.1.2)实现免密登陆
登陆服务器A
1、创建公钥
[guest@localhost ~]$ ssh-keygen -t rsa
ssh-keygen命令后面的 -t rsa 不是必须的,以为这里默认生成的密钥类型就是rsa类型。
然后用默认配置,一直按Enter键:
[guest@localhost ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/guest/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/guest/.ssh/id_rsa.
Your public key has been saved in /home/guest/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:gaCoNUOpfyeSCPHOt1wjrNXA5v9Qjflnlfan0eaJZ5s guest@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
| ... |
|.o.. . . |
|.+=. . . |
|+..o+ = . |
|o= = o S . + |
|. * O =. . o o |
| B B.. . o . =|
| . o .. o .B+|
| .. .+Eo|
+----[SHA256]-----+
[guest@localhost ~]$
说明
Enter file in which to save the key (/home/guest/.ssh/id_rsa):文件保存的位置,默认为当前"用户身份"的主文件夹下的.ssh文件夹下的id_rsa
Enter passphrase (empty for no passphrase):输入连接密码,默认为空
Enter same passphrase again:再次输入密码,默认为空
2、查看公钥
生成之后会在当前用户的根目录生成一个 “.ssh”的文件夹。进入“.ssh”会生成以下几个文件:
[guest@localhost ~]$ cd .ssh/
[guest@localhost .ssh]$ ll
总用量 12
-rw-------. 1 guest guest 1675 11月 22 09:42 id_rsa
-rw-r--r--. 1 guest guest 409 11月 22 09:42 id_rsa.pub
-rw-r--r--. 1 guest guest 344 10月 19 14:56 known_hosts
[guest@localhost .ssh]$
注:
在当前用户的根目录是通过 “ll” 、“ls” 命令是看一不到,需要用 “ll -a”、“ls -a” 命令查看。
.ssh下的文件说明:
- authorized_keys:存放远程免密登录的公钥,主要通过这个文件记录多台机器的公钥
- id_rsa:生成的私钥文件
- id_rsa.pub:生成的公钥文件
- know_hosts:已知的主机公钥清单
3、上传公钥到服务器B
[guest@localhost ~]$ cd .ssh/
[guest@localhost .ssh]$ scp id_rsa.pub guest@192.168.1.2:/home/guest/
条条大路通罗马,只要把 id_rsa.pub 文件上传到另一台服务即可。
登录服务器B
找到上传的 id_rsa.pub 文件,将公钥(id_rsa.pub)追加到认证文件(authorized_keys),执行以下指令:
[guest@localhost ~]$ cd .ssh/
[guest@localhost ~]$ cat ../id_rsa.pub >> authorized_keys
执行完后进入目标服务器的 .ssh 文件夹中查看授权列表 authorized_keys 发现原服务器的公钥已经添加进去了。
配置好后,再次回到服务器A,在服务器A中测试访问服务B验证是否配置成功:
[guest@localhost ~]$ ssh guest@192.168.1.2
此时如果看到服务器B目录后说明配置成功。
附:
Authentication refused: bad ownership or modes错误解决方法
ssh为了安全,对目录和文件权限有所要求。如果权限不对,则ssh的免密码登陆不生效。
- .ssh目录权限一般为755或者700,不能是77x。
- rsa_id.pub 及authorized_keys权限一般为644
- rsa_id权限必须为600
解决方法
检测目录权限,把不符合要求的按要求设置权限即可。
———————————
相互学习,共同进步
如有不足请留言指正