2台机器配置ssh证书免密登陆(互信)

原创 zhaoshuman  2026-03-05 17:22:08  阅读 169 次 评论 0 条
摘要:

免密登录需求平时在工作中,可能需要从一台服务器上将文件分发到其他多台服务器,如果每次都需要输入密码就显得太麻烦了,这种情况就可以通过免密登录来实现。

一、免密登录需求

平时在工作中,可能需要从一台服务器上将文件分发到其他多台服务器,如果每次都需要输入密码就

显得太麻烦了,这种情况就可以通过免密登录来实现。如ansible,kubernetes等服务在部署时都有

这样的需求。


二、配置SSH免密登录概述

1、ssh免密登录原理

SSH(Secure Shell)是一种加密的网络协议,用于在不安全的网络上安全地进行远程登录和其他

安全网络服务。免密认证的核心思想是利用公钥和私钥进行认证,而不是每次都输入密码。只要在

客户端和服务器之间正确配置了公钥和私钥,用户可以直接登录而无需输入密码。


2、相关的文件

在每台服务的~/.ssh目录下会有以下四个文件: authorized_keys: 存放远程免密登录的公钥,主要

通过这个文件记录多台机器的公钥。 id_rsa: 私钥文件 id_rsa.pub: 公钥文件 known_hosts: 已知

的主机公钥清单


如果将我们生成的公钥放到相应主机的对应用户的authorized_keys文件下,就可以实现免密登录。


在生成密钥时,默认会在~/.ssh目录下生成密钥(id_rsa和id_rsa.pub),如果.ssh目录不存在

,则会自动创建。


三、实现免密操作

1、生成密钥

ssh-keygen -t rsa (三次回车,不输入其他信息)

-t 选项指定要使用的加密算法,“rsa”表示使用RSA算法

默认会在~/.ssh目录下生成密钥(id_rsa和id_rsa.pub),如果.ssh目录不存在,则会自动创建。

[root@linux ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):   # 密钥放置的路径
Enter passphrase (empty for no passphrase): # 配置密码保护密钥,回车为不配置
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:
SHA256:A/kj+6dddddoKheAo6Kx932341VYLN2J/wmBHn0XFw root@linux
The key's randomart image is:
+---[RSA 2048]----+
|            .o*+E|
|       .   ..=.=o|
|      o.  . o.* =|
|.   . oo . . o +.|
|oo   o..S     . o|
|= o . o+ o     o |
|oo.o.oo          |
|=  =o. .         |
|o++......        |
+----[SHA256]-----+

2、复制本机公钥到其它机器(可以使用命令方式传输也可以复制拷贝密钥内容到另外一台机器)

#如下是命令方式拷贝公钥id_rsa.pub到172.168.22.35
[root@linux ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.168.22.35
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '172.168.22.35 (172.168.22.35)' can't be established.
ECDSA key fingerprint is SHA256:BpTKrxztroqHQiyBmInb7Y9R/rKyNgtyqvBp3TZiToU.
ECDSA key fingerprint is MD5:08:6c:1d:18:4c:a7:6f:7c:09:86:47:ea:07:a2:55:e0.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@172.168.22.35's password:   # 输入服务器密码
 
Number of key(s) added: 1
 
Now try logging into the machine, with:   "ssh 'root@172.168.22.35'"
and check to make sure that only the key(s) you wanted were added.
#另外一种方式就是使用命令cat ~/.ssh/id_rsa.pub本机密钥内容,然后复制内容行(注意这个文件只有一行内容,且内容较长复制后要检查是否只有一行)
#拷贝后粘贴到172.168.22.35的机器~/.ssh/authorized_keys 文件末尾行(没有文件就新增这个文件,但权限需要chmod 600 authorized_keys)


注意:比如上边的操作是将本机root用户下的公钥id_rsa.pub放置到机器172.168.22.35的root用户下,

那么则表示172.168.22.35机器的root用户可以使用root直接访问本机,如不希望对方免密使用root用户

访问本机,则本机生成密钥请使用其它用户例如user,则设置后在172.168.22.35的机器免密访问就需要

使用ssh带user用户访问才能成功。


如果以上设置后还不正常,需要检查 SSH 服务配置:

• 确保   PubkeyAuthentication   选项被设置为   yes  。

• 确保   AuthorizedKeysFile   选项被设置为   .ssh/authorized_keys  。

• 修改配置后,重启 SSH 服务:sudo systemctl restart sshd

•确保   /etc/ssh/sshd_config   文件中的   PasswordAuthentication   选项被设置为   no  。

•确保确保.ssh文件夹权限为700,AuthorizedKeysFile权限为600



 

 


本文地址:https://zhaoshuman.cn/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/7.html
免责声明:本文为原创文章,版权归 zhaoshuman 所有,欢迎分享本文,转载请保留出处!

发表评论


表情

还没有留言,还不快点抢沙发?