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

背景和需求

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值