Linux服务器之间交互实现无密码交互

分享知识 传递快乐

 

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

解决方法

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

 

 

 

 

 

 

 

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旷野历程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值