分享知识 传递快乐

 

服务器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

解决方法

检测目录权限,把不符合要求的按要求设置权限即可。


 

———————————
相互学习,共同进步
如有不足请留言指正