CentOS通过公私钥方式实现linux机器间免密登录(较完整步骤)

文章介绍了如何在CentOS系统上安装或重启sshd服务,以及配置机器之间的公私钥免密登录。通过生成和分发公钥,修改sshd_config文件来允许特定主机免密登录,同时强调了安全风险和防范措施。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景和需求

企业对于办公网-线上环境的远程登录操作一般都会进行限制。比如常见的通过堡垒机或者跳板机 实现 用户单次登录到服务器。
但是 总有些情况下用户需求是:本人有权限的机器之间直接免密登录;比如 部署一套集群类型的服务,或者多节点的一个服务。那么肯定希望机器之间能够免密去进行文件传输、配置同步等等
当然,如果自己不怕麻烦,耐心去寻找,总有替代方案,也能帮助公司减少安全隐患。此类需求建议再配置一套ftp等信息同步协议,也不需要免密去登陆了。
适用场景:企业已经有一个自己的服务端口用于通过堡垒机登录机器了,当前个人需要再开启22端口去用于ssh服务实现正常的免密。操作系统为:CentOS

安装或重启sshd服务

一般系统中所安装的ssh服务都是由 openssh 包提供的,我们先通过命令查看openssh 包提供的 systemd 服务相关文件

rpm -ql openssh-server

返回结果:/etc 目录存放了系统的各个配置文件、启动脚本等(主要为配置文件,比如/etc/ssh/sshd_config);/usr 目录存放了系统的应用程序(如:/usr/lib/systemd/system/sshd.service)
在这里插入图片描述
认识sshd服务的相关文件和目录(系统默认的)
sshd.service / sshd.socket sshd服务的系统启动文件(centos一般为.service)
sshd-keygen.service 用于生成系统公私钥的服务
sshd_config 通过sshd.service服务启动所加载的配置文件
sshd.socket 通过sshd.socket 服务启动所加载的配置文件

在root用户权限下开始执行如下步骤启动或安装sshd:
查看sshd.service文件内容(有兴趣自己了解):

cat /usr/lib/systemd/system/sshd.service

检查sshd服务启动的状态:

systemctl status sshd

查看结果:发现sshd服务未正常启动在这里插入图片描述
报错(Cannot add dependency job for unit sshd.service, ignoring: Unit is masked.)此处原因是sshd服务被锁住了。
通过命令 systemctl unmask sshd 解锁,然后直接执行命令 ** systemctl restart sshd**重启sshd服务,检查状态:active 表示正常
在这里插入图片描述
遇难三板斧:一般问题:sshd被锁、端口被占用、配置文件加载出错等。
如果遇到sshd服务被卸载的,直接重装即可(yum install openssh-server -y)

systemctl unmask sshd #解锁sshd服务
netstat -lntp | grep sshd | grep 22| awk '{print $7}' | awk -F '/' '{print $1}' #查找sshd服务的22端口进程
netstat -lntp | grep sshd | grep 22| awk '{print $7}' | awk -F '/' '{print $1}' | xargs kill  查找22端口的sshd服务,并直接kill掉
systemctl start sshd
systemctl status sshd

配置机器之间 公私钥 免密登录

首先 你有机器A和机器B,IP分别为:

10.0.0.1 #机器A
10.0.0.2 #机器B

1、通过机器A直接免密登录到机器B上
a、先分发公私钥
先进去机器A,在root权限下执行如下命令:

ssh-keygen

在这里插入图片描述
直接适用默认路径即可,表示给机器A的root账户生成了公私钥。下一步是把机器A的公钥放在机器B的 /root/.ssh/authorized_keys

在机器A上操作:
cd /root/.ssh/
cat id_rsa.pub #将cat的结果复制到自己的剪切板上!!!
在机器B上操作,远程机器B,通过 sudo su 获取root权限:
cd /root/.ssh/
echo $粘贴自己剪切板的内容 >> authorized_keys

b、修改机器B上面的sshd_config
修改的内容如下:(ps:此处仅针对 公私钥配置和一些我遇到的问题进行配置修改分析,若不适用,请参考sshd_config文件的详解,附录链接)
执行命令 vim /etc/ssh/sshd_config

Port 22 #选择sshd服务的启动端口
PasswordAuthentication yes #是否允许账号密码登录(公私钥建议选择no)
PubkeyAuthentication yes #是否允许公私钥认证登录
AllowUsers root@机器A_IP # 允许机器a通过root用户登录
PermitEmptyPasswords yes # 是否允许空密码(免密类型配置yes)
PermitRootLogin yes # 是否允许root登录(登录到的是root账户,选yes)

配置完成后,保存,然后重启sshd服务systemctl restart sshd

验证

在机器A上测试登录:ssh root@机器B -p22
在这里插入图片描述
确认登录完成。
同理,如想要配置机器B免密登录机器A,相同的操作,换机器的身份即可!

写在最后

安全风险:企业虽限制了用户远程直连线上服务器的方式,实现了更安全的通过堡垒机/跳板机连接到服务器。但是其仍然解决不了的事 服务器之间东西向的流量,故如果一台主机被攻陷,那么若用户配置了类似 弱密码、无密码、公钥被窃取等类型的 机器间免密登录,则风险无法估量和溯源。担责为安全和用户
防护措施:如若工作需求,需要配置此类免密登录方式,建议用户熟读sshd配置文件的一些字段和限制,比如AllowUsers 等,可以较好的在免密同时,提高安全性!还有一些其他的sshd安全文件 比如:/etc/hosts.allow 和 /etc/hosts.deny

sshd_config 配置文件参考链接: sshd配置文件参考
https://www.cnblogs.com/klb561/p/9190989.html

### 如何配置SSH免密登录 #### 生成SSH密钥对 在本地计算机上生成SSH密钥对是一项基础操作。可以通过运行 `ssh-keygen` 命令来完成此任务,该命令用于生成、管理和存储SSH认证所需的公私钥对[^2]。 ```bash ssh-keygen -t rsa ``` 上述命令将生成基于RSA算法的密钥对,默认情况下会将其保存在用户的 `.ssh` 文件夹下,并提示用户输入密码短语(passphrase)。如果不需要额外保护,则可以直接按回车跳过此项设置。 #### 将公钥复制至目标主机 生成好密钥之后,需把产生的公共部分发送给打算访问的目标机器。一种简便的方法就是借助于专门为此设计的小型实用程序——`ssh-copy-id`: ```bash ssh-copy-id user@remote_host ``` 这里替换掉"user"和"remote_host"为实际使用的账户名与远端地址。这条指令自动处理了权限设定并将你的公开钥匙追加进对方系统的授权列表里去[^3]。 #### 修改服务器侧配置文件 有时还需要调整远程Linux服务器上的SSHD服务配置以支持基于密钥的身份验证方式。编辑 `/etc/ssh/sshd_config` 文件找到下面几项确保它们被启用: - **PubkeyAuthentication yes** - **AuthorizedKeysFile .ssh/authorized_keys** 最后记得重启SSH服务使更改生效: 对于Debian系发行版像Ubuntu来说, 可能需要用这样的命令启动sshd daemon: ```bash sudo systemctl restart sshd ``` 或者如果是CentOS/RHEL之类的RedHat家族成员的话, ```bash sudo service sshd restart ``` 以上步骤完成后应该能够实现从客户端到指定服务器之间的无缝连接而无需每次都手动键入密码了[^4]。 ### 注意事项 在整个过程中需要注意几个常见错误点: 1. 权限问题:确认`.ssh`目录及其内部文件具有恰当的所有者及读写属性; 2. 路径准确性:保证`~/.ssh/authorized_keys`路径存在且正确无误; 3. 防火墙规则开放相应端口(默认22),以便外部请求得以穿透防火墙到达目的地。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值