《Linux SSH 故障自愈实录:从密钥免密登录到 RPM 包底层文件修复》
·
一、windows 终端工具使用密钥登录Linux
1.生成密钥对(私钥和公钥)
2.将公钥复制给Linux服务器
3.测试
1.生成密钥对(私钥和公钥)
xshell : 工具-用户秘钥管理者-生成,打开界面基本上是下一步即可。
找到私钥-属性-公钥标签,复制公钥。
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA01T4qtIKZ60l+uldThagiutpKy2agh/wdJ1Te5DFztB8Xw7RxUxC0+qGGdixA4Mc3j2+kpcAPqNuCJQ+5loK9NDuiusFmq2VoW/bQrpD6Y0OzN9PVSOPXR2VNUBfV5XUmopd7sNBNEraYCSihOY7pomXZBtCNu9UTAbkJunzgHM7C4rzp8QCYCof7gumiIUzR33vLFygWln+b3WdfboSjv+ta7TW9/9/TnoQBWGJQ1hWW/EQB6kUdxF/gQ71MRhQdUc40EwKQ4ptWh5ejU9q0nNxvXxtafxskPVe4jmK5kafJGa3R3B7z8mPICiKbN/HjA9eexJUmZnUoOom2kaepw== rsa 2048-20260406
2.写入对方文件~/.ssh/authorized_keys
[caojie@centos7 ~ 21:02:04]$ vim .ssh/authorized_keys
[caojie@centos7 ~ 21:02:50]$ ll .ssh/authorized_keys
-rw-rw-r-- 1 caojie caojie 399 Apr 6 21:02 .ssh/authorized_keys
[caojie@centos7 ~ 21:03:01]$ chmod 600 .ssh/authorized_keys
[caojie@centos7 ~ 21:03:12]$
3.登录时候,选择验证方式:公钥,并指定对应公钥。
-
刚刚实现 windows 使用 laoma 用户秘钥登录 centos7
-
思考:如何实现 windows 使用 root 用户秘钥登录 centos7?

[root@centos7 ~ 21:49:19]# cat /home/caojie/.ssh/authorized_keys >> /root/.ssh/authorized_keys
ssh配置
ssh 工具配置文件
~/.ssh/config,用户级别,给用户自己定制,优先级更高
/etc/ssh/ssh_config,系统(全局)级别,默认设置,针对系统中所有用户生效
sshd 服务配置文件
/etc/ssh/sshd_config ,针对sshd服务生效。
二、禁止密码登录
控制root用户登录。因为所有Linux系统管理员都是root,防止暴力破解。
PermitRootLogin no 禁止登录
PermitRootLogin prohibit-password 禁止使用密码登录
[root@centos7 ~ ]# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.20260403
[root@centos7 ~ ]# vim /etc/ssh/sshd_config
1. /Root,定位。如果第一个搜索到的内容不是需要的,使用n(next)查找下一个。
2. yy 复制对应行,p 粘贴到下一行。(保留原有行)
3. 自行删除第一#
4. w 跳转到yes位置,cw 替换一个单词,输入prohibit-password,按esc
5. ZZ 保存退出。
6. 重新加载服务
[root@centos7 ~ 10:34:57]# systemctl reload sshd
7. 验证
# 禁止密码登录。
PasswordAuthentication no
# 验证
DenyUsers, AllowUsers, DenyGroups,AllowGroups
例如,AllowUsers laoma

三、man 帮助
=============== man 帮助 ==================
man 帮助
命令 --help 查询命令
如果查询配置文件如何写?
man 配置文件名,例如man sshd_config
搜索 Root(/Root)
=============== man 帮助 ==================
四、软件包升级
=============== 软件包升级 ==================
# 查询软件包版本
[root@CentOS ~]# rpm -q openssh-server
openssh-server-7.4p1-22.el7_9.x86_64
# 查询可用版本
[root@CentOS ~]# yum list openssh-server --showduplicates
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
已安装的软件包
openssh-server.x86_64 7.4p1-22.el7_9 @anaconda
可安装的软件包
openssh-server.x86 _64 7.4p1-21.el7 base
openssh-server.x86_64 7.4p1-22.el7_9 updates
openssh-server.x86_64 7.4p1-23.el7_9 updates
# 升级到最新版本
[root@CentOS ~]# yum update -y openssh-server
# 测试 参数 /etc/ssh/sshd_config 中参数 PermitRootLogin prohibit-password
=============== 软件包升级 ==================
软件安装
- bash-completion: 命令行补全
- vim: 高亮显示编辑器
- open-vm-tools: vmware 更好地控制虚拟机
- lrzsz: 上传和下载
- unzip: 解压zip
- rsync: 同步
- sshpass: 传递密码
五、vmware 三种网络模式
桥接模式
- 相当于把虚拟机当成局域网里的一台独立电脑,它会从路由器获取一个和宿主机同网段的IP,既能上网,也能被局域网其他设备访问。
NAT模式
- 最常用的默认模式,虚拟机通过宿主机的IP“借道”上网,它在一个虚拟子网里,外部网络无法直接访问它,安全又省心。
仅主机模式
- 完全隔离的“单机版”网络,虚拟机只能和宿主机以及同一台机器上的其他虚拟机通信,彻底断绝与外部互联网的连接。
六、CentOS 7 初始化配置
1 命令提示符
2 关闭 selinux
3 关闭防火墙
4 配置本地仓库
5 安装基础软件包
6 配置密钥登录自己
七、查看日志/模拟sshd故障,并排故
1.systemd-journal (systemd子系统)
2.rsyslog 服务对应
rsyslog 将日志记录到对应的文件中:
| /var/log/messages | 大多数系统日志(排除认证、邮件、定时任务、调试日志) |
| /var/log/secure | 安全/认证相关日志(如ssh登录、用户验证) |
| /var/log/maillog | 邮件服务相关日志(如sendmail/postfix) |
| /var/log/cron | 定时任务执行日志(crontab/anacron) |
| /var/log/boot.log | 系统启动过程中的非syslog控制台消息 |
新增加一个ssh连接,日志更新内容如下
[root@centos7 ~ 22:21:07]# tail -f /var/log/secure
Apr 6 22:04:33 centos7 sshd[1709]: Disconnected from 10.1.8.1 port 62666 [preauth]
Apr 6 22:04:41 centos7 sshd[1711]: Accepted publickey for caojie from 10.1.8.1 port 62685 ssh2: RSA SHA256:fGLRi49Oh3EyjHiz7uTxfLxRRwt7vrmOkhIK00UG/Bs
Apr 6 22:04:41 centos7 sshd[1711]: pam_unix(sshd:session): session opened for user caojie by (uid=0)
Apr 6 22:04:50 centos7 sshd[1711]: pam_unix(sshd:session): session closed for user caojie
Apr 6 22:04:59 centos7 sshd[1738]: Authentication refused: bad ownership or modes for directory /root/.ssh
Apr 6 22:05:00 centos7 sshd[1738]: error: Received disconnect from 10.1.8.1 port 62695:0: [preauth]
Apr 6 22:05:00 centos7 sshd[1738]: Disconnected from 10.1.8.1 port 62695 [preauth]
Apr 6 22:09:41 centos7 sshd[952]: Received signal 15; terminating.
Apr 6 22:09:41 centos7 sshd[1773]: Server listening on 0.0.0.0 port 22.
Apr 6 22:09:41 centos7 sshd[1773]: Server listening on :: port 22.
模拟故障1:
[root@centos7 ~ 22:21:50]# cp /etc/ssh/sshd_config{,.0403}
[root@centos7 ~ 22:21:53]# echo hello world >> /etc/ssh/sshd_config
[root@centos7 ~ 22:21:59]# systemctl restart sshd
Job for sshd.service failed because the control process exited with error code. See "systemctl status sshd.service" and "journalctl -xe" for details.
# 根据提示 查看状态
[root@centos7 ~ 22:22:04]# systemctl status sshd.service
● sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
Active: activating (auto-restart) (Result: exit-code) since Mon 2026-04-06 22:22:04 CST; 25s ago
Docs: man:sshd(8)
man:sshd_config(5)
Process: 1788 ExecStart=/usr/sbin/sshd -D $OPTIONS (code=exited, status=255)
Main PID: 1788 (code=exited, status=255)
Apr 06 22:22:04 centos7.caojie.cloud systemd[1]: sshd.service: main process exited, c...a
Apr 06 22:22:04 centos7.caojie.cloud systemd[1]: Failed to start OpenSSH server daemon.
Apr 06 22:22:04 centos7.caojie.cloud systemd[1]: Unit sshd.service entered failed state.
Apr 06 22:22:04 centos7.caojie.cloud systemd[1]: sshd.service failed.
# 状态日志没有对应提示信息
# 继续查看message日志
[root@centos7 ~ 22:22:30]# tail /var/log/messages
Apr 6 22:22:04 centos7 systemd: sshd.service failed.
Apr 6 22:22:47 centos7 systemd: sshd.service holdoff time over, scheduling restart.
Apr 6 22:22:47 centos7 systemd: Stopped OpenSSH server daemon.
Apr 6 22:22:47 centos7 systemd: Starting OpenSSH server daemon...
Apr 6 22:22:47 centos7 sshd: /etc/ssh/sshd_config: line 142: Bad configuration option: hello
Apr 6 22:22:47 centos7 sshd: /etc/ssh/sshd_config: terminating, 1 bad configuration options
Apr 6 22:22:47 centos7 systemd: sshd.service: main process exited, code=exited, status=255/n/a
Apr 6 22:22:47 centos7 systemd: Failed to start OpenSSH server daemon.
Apr 6 22:22:47 centos7 systemd: Unit sshd.service entered failed state.
Apr 6 22:22:47 centos7 systemd: sshd.service failed.
# 发现 142 行有问题。
# 根据提示修复。
[root@centos7 ~ 22:23:23]# vim /etc/ssh/sshd_config
# 注释最后一行
#hello world
[root@centos7 ~ 22:30:01]# systemctl restart sshd
[root@centos7 ~ 22:30:48]# systemctl is-active sshd
active
# 提示成功
模拟故障2:
# 首先将sshd_config文件移动到当前目录下
[root@centos7 ~ 22:40:10]# mv /etc/ssh/sshd_config .
# 重启 Linux 上的远程连接服务(SSH),提示启动失败
[root@centos7 ~ 22:40:15]# systemctl restart sshd
Job for sshd.service failed because the control process exited with error code. See "systemctl status sshd.service" and "journalctl -xe" for details.
# 查看 SSH 服务最近的报错日志,找出为什么启动失败。
[root@centos7 ~ 22:41:12]# journalctl -e -u sshd
Apr 06 22:29:14 centos7.caojie.cloud sshd[11736]: /etc/ssh/sshd_config: terminating, 1 ba
Apr 06 22:29:14 centos7.caojie.cloud systemd[1]: sshd.service: main process exited, code=
Apr 06 22:29:14 centos7.caojie.cloud systemd[1]: Failed to start OpenSSH server daemon.
Apr 06 22:29:14 centos7.caojie.cloud systemd[1]: Unit sshd.service entered failed state.
Apr 06 22:29:14 centos7.caojie.cloud systemd[1]: sshd.service failed.
Apr 06 22:29:56 centos7.caojie.cloud systemd[1]: sshd.service holdoff time over, scheduli
Apr 06 22:29:56 centos7.caojie.cloud systemd[1]: Stopped OpenSSH server daemon.
Apr 06 22:29:56 centos7.caojie.cloud systemd[1]: Starting OpenSSH server daemon...
Apr 06 22:29:56 centos7.caojie.cloud sshd[11738]: Server listening on 0.0.0.0 port 22.
Apr 06 22:29:56 centos7.caojie.cloud sshd[11738]: Server listening on :: port 22.
Apr 06 22:29:56 centos7.caojie.cloud systemd[1]: Started OpenSSH server daemon.
Apr 06 22:30:01 centos7.caojie.cloud systemd[1]: Stopping OpenSSH server daemon...
Apr 06 22:30:01 centos7.caojie.cloud systemd[1]: Stopped OpenSSH server daemon.
Apr 06 22:30:01 centos7.caojie.cloud systemd[1]: Starting OpenSSH server daemon...
Apr 06 22:30:01 centos7.caojie.cloud sshd[11747]: Server listening on 0.0.0.0 port 22.
Apr 06 22:30:01 centos7.caojie.cloud sshd[11747]: Server listening on :: port 22.
Apr 06 22:30:01 centos7.caojie.cloud systemd[1]: Started OpenSSH server daemon.
Apr 06 22:30:47 centos7.caojie.cloud systemd[1]: Stopping OpenSSH server daemon...
Apr 06 22:30:47 centos7.caojie.cloud systemd[1]: Stopped OpenSSH server daemon.
Apr 06 22:30:47 centos7.caojie.cloud systemd[1]: Starting OpenSSH server daemon...
Apr 06 22:30:48 centos7.caojie.cloud sshd[11755]: Server listening on 0.0.0.0 port 22.
Apr 06 22:30:48 centos7.caojie.cloud sshd[11755]: Server listening on :: port 22.
Apr 06 22:30:48 centos7.caojie.cloud systemd[1]: Started OpenSSH server daemon.
Apr 06 22:41:12 centos7.caojie.cloud systemd[1]: Stopping OpenSSH server daemon...
Apr 06 22:41:12 centos7.caojie.cloud systemd[1]: Stopped OpenSSH server daemon.
Apr 06 22:41:12 centos7.caojie.cloud systemd[1]: Starting OpenSSH server daemon...
Apr 06 22:41:12 centos7.caojie.cloud sshd[11769]: /etc/ssh/sshd_config: No such file or d
Apr 06 22:41:12 centos7.caojie.cloud systemd[1]: sshd.service: main process exited, code=
Apr 06 22:41:12 centos7.caojie.cloud systemd[1]: Failed to start OpenSSH server daemon.
Apr 06 22:41:12 centos7.caojie.cloud systemd[1]: Unit sshd.service entered failed state.
Apr 06 22:41:12 centos7.caojie.cloud systemd[1]: sshd.service failed
# 发现 /etc/ssh/sshd_config: No such file or directory 没有安装ssh服务
# 查询文件哪个软件包提供
[root@centos7 ~ 22:43:27]# yum provides /etc/ssh/sshd_config
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
openssh-server-7.4p1-21.el7.x86_64 : An open source SSH server daemon
Repo : base
Matched from:
Filename : /etc/ssh/sshd_config
openssh-server-7.4p1-22.el7_9.x86_64 : An open source SSH server daemon
Repo : updates
Matched from:
Filename : /etc/ssh/sshd_config
openssh-server-7.4p1-23.el7_9.x86_64 : An open source SSH server daemon
Repo : updates
Matched from:
Filename : /etc/ssh/sshd_config
openssh-server-7.4p1-23.el7_9.x86_64 : An open source SSH server daemon
Repo : @updates
Matched from:
Filename : /etc/ssh/sshd_config
# yum-utils提供yumdownloader,用于下载软件包
[root@centos7 ~ 22:43:30]# yum install -y yum-utils
[root@centos7 ~ 22:43:48]# yumdownloader openssh-server
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
openssh-server-7.4p1-23.el7_9.x86_64.rpm | 459 kB 00:00:00
[root@centos7 ~ 22:43:59]# rpm2cpio openssh-server-7.4p1-23.el7_9.x86_64.rpm | cpio -t
./etc/pam.d/sshd
./etc/ssh/sshd_config
./etc/sysconfig/sshd
./usr/lib/systemd/system/sshd-keygen.service
./usr/lib/systemd/system/sshd.service
./usr/lib/systemd/system/sshd.socket
./usr/lib/systemd/system/sshd@.service
./usr/lib64/fipscheck/sshd.hmac
./usr/libexec/openssh/sftp-server
./usr/sbin/sshd
./usr/sbin/sshd-keygen
./usr/share/man/man5/moduli.5.gz
./usr/share/man/man5/sshd_config.5.gz
./usr/share/man/man8/sftp-server.8.gz
./usr/share/man/man8/sshd.8.gz
./var/empty/sshd
1946 blocks
# 直接提取对应文件
[root@centos7 ~ 22:44:18]# rpm2cpio openssh-server-7.4p1-23.el7_9.x86_64.rpm | cpio -id ./etc/ssh/sshd_config
1946 blocks
[root@centos7 ~ 22:44:36]# yum install -y tree
[root@centos7 ~ 22:44:51]# tree etc
etc
└── ssh
└── sshd_config
1 directory, 1 file
# 最后重启 Linux 上的远程连接服务(SSH),提示启动成功
[root@centos7 ~ 22:44:55]# systemctl restart sshd
[root@centos7 ~ 22:45:17]# systemctl is-active sshd
active
[root@centos7 ~ 22:47:38]#
更多推荐



所有评论(0)