Linux 配置 ssh 免密码登陆

本贴最后更新于 2304 天前,其中的信息可能已经沧海桑田

1. 两台机器之间免密码登陆配置

这里我拿自己的两台机器(node1,node2)为例,介绍如何配置免密码登陆,这里我配置用户 wxyuan 的免密码登陆
(1) 登陆 node1 机器,执行 ssh-keygen -t rsa 命令生成公钥和私钥

[wxyuan@node1 ~]$ ssh-keygen -t rsa
# 连续三次回车,即在本地生成了公钥和私钥,不设置密码,默认存储在 ~/.ssh目录下
Generating public/private rsa key pair.
Enter file in which to save the key (/home/wxyuan/.ssh/id_rsa):  
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/wxyuan/.ssh/id_rsa.
Your public key has been saved in /home/wxyuan/.ssh/id_rsa.pub.
The key fingerprint is:
45:ae:bf:00:5a:69:80:16:a9:34:b8:39:54:3a:ca:ee wxyuan@node1
The key's randomart image is:
+--[ RSA 2048]----+
|. oo      .      |
|.+oo     o       |
|o*+ .     o      |
|B..  . . o       |
|.o    = S        |
|.    + . .       |
| .  .   . .      |
|.        . .     |
| E        .      |
+-----------------+
[wxyuan@node1 .ssh]$ ll
总用量 12
-rw------- 1 wxyuan wxyuan 1675 5月  25 16:01 id_rsa
-rw-r--r-- 1 wxyuan wxyuan  394 5月  25 16:01 id_rsa.pub

(2) 登陆 node2 机器,执行 ssh-keygen -t rsa 命令生成公钥和私钥

[wxyuan@node2 ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/wxyuan/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/wxyuan/.ssh/id_rsa.
Your public key has been saved in /home/wxyuan/.ssh/id_rsa.pub.
The key fingerprint is:
56:c7:d5:df:be:ba:f4:09:74:e0:81:be:49:bb:29:2d wxyuan@node2
The key's randomart image is:
+--[ RSA 2048]----+
|              .. |
|           ...  .|
|          ..oo  o|
|         .... o o|
|        S  o o o |
|       .  . = . .|
|          .+ o  .|
|         E .+ o..|
|          oo ooo |
+-----------------+

(3) 在 node1 的.ssh 目录下创建 authorized_keys 文件,然后将 node1 和 node2 的 id_rsa.pub 文件内容保存到 authorized_keys

[wxyuan@node2 .ssh]$ ll
总用量 12
-rw-r----- 1 wxyuan wxyuan 1182 5月  25 16:06 authorized_keys
-rw------- 1 wxyuan wxyuan 1675 5月  25 16:03 id_rsa
-rw-r--r-- 1 wxyuan wxyuan  394 5月  25 16:03 id_rsa.pub
[wxyuan@node2 .ssh]$ cat authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA38ylacLk4Pri8nN27yist2NkRCjQRKcflNPzkl9eOfx16M+HZ8gKQ+ZRvBzF9NUA5FLGpG9DmoYJ+EWmUHjfJaGt7mXIuOzYMyaHV5i/Lk28PkiZIzag5LIiR8bR6/0JnMXuZtCEvICdkzmGwIcQRmSLMbyAKhhirqFHiJDST8d3gDzIDM6B+NHG0ZWypNuj4GEIgy6xRFy3C895ZIp+4OzB4y0fDEbIxJdRWLkZGX6AD5fdQnNehCwrMtso9xZUIVPxztQWmkAPs+zjIqxXtEPFGNmtCvQPwwi0+aQn++ENoTYj2V6WWLlZw+T3KHkxawXbqpMf85al+k0Ce7DTIw== wxyuan@node1
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAvzr7kzqcviS59yEsQemZakM2Qk94wWw42dVaEq1lQ8QGtBNerl9C4vVY5ZJbw20D7uHmCs13lZgV6OVfjJDoxwgsLmIjTDAxfR3L+sqnN+Tk90PFeCx9i5Rbb/as3lnNiZaISzFa8UjHRszIZsijgnGXgU1CLk1TijGq9L+4JDtHUPr8nvd+2apkeqZsU7I+pOhvXrR5RhkVbFpIgLpwPhNiGqIiG0YqBdUcKO8GmHZlM2rG2U5IAM0nlUmVHjSuTjrnjY3SL8ye1v8nl1CcLv5qNZEHtceH4LhibAYab+KcJsPzcja++2vyfY6VGLNIMZeETkA630K9VHWoYTei1w== wxyuan@node2

(4) 同样地,在 node2 的.ssh 目录下创建 authorized_keys 文件,然后将 node1 和 node2 的 id_rsa.pub 文件内容保存到 authorized_keys
(5) 测试免密码登陆

[wxyuan@node1 .ssh]$ ssh node2
Last login: Fri May 25 16:22:53 2018 from node1
[wxyuan@node2 ~]$ ssh node1
Last login: Fri May 25 16:56:33 2018 from node2
[wxyuan@node1 ~]$ 

2. 多台机器配置免密码登陆

当需要配置免密码的登陆的机器较多时,比如说几十台(A,B,C,D.....),如果安装上面的方法,是比较繁琐的,而且很容易出错。所以,这里介绍一种较省力的方法。
(1) 登陆 A 机器,执行 ssh-keygen -t rsa 命令生成公钥和私钥;
(2) 在 A 机器的.ssh 目录下创建 authorized_keys 文件,将 id_rsa.pub 文件内容保存到 authorized_keys(cat id_rsa.pub > authorized_keys),然后把 authorized_keys 文件复制到 B 机器;
(3) 登陆 B 机器,执行 ssh-keygen -t rsa 命令生成公钥和私钥,然后将 id_rsa.pub 文件内容追加保存到 authorized_keys 文件末尾(cat id_rsa.pub >> authorized_keys),同时把 authorized_keys 文件复制到 C 机器;
(4) 登陆 C 机器,执行 ssh-keygen -t rsa 命令生成公钥和私钥,然后将 id_rsa.pub 文件内容追加保存到 authorized_keys 文件末尾(cat id_rsa.pub >> authorized_keys),同时把 authorized_keys 文件复制到 D 机器;
(5) 以此类推,直到最后一台机器的 id_rsa.pub 文件内容追加保存到 authorized_keys 文件末尾;
(6) 将 authorized_keys 文件复制到其它所有机器的.ssh 目录下。
到此,所有机器之间的免密码登陆配置完成,接下来测试一下能否成功就可以了。

3. 配置完免密码登陆后不生效的问题

如果免密码登陆配置完成后,仍然不能实现免密登陆,很可能是权限问题造成的,这里说明几个文件和目录的权限,供参考。
(1) 修改 id_rsa 文件的权限为 600
(2) 修改 id_rsa.pub 文件的权限为 644
(3) 修改 authorized_keys 文件的权限为 640 或 600
(4) 修改.ssh 文件夹的权限为 700
(5) 修改实现免密码登陆的用户目录权限(即用户家目录权限)为 700 或 755
注意:上面说明的几个文件和目录的权限都要保证正确,如果上面的文件或目录权限都正确,但免密码登陆仍然不生效,你可以借助 ssh -v 命令打印登陆信息,查看失败的原因。

  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    946 引用 • 943 回帖
  • wxyuan
    1 引用

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...