【Centos】sshd 无法启动(解决问题篇,附问题排查思路和解决方法)

本文详细记录了解决CentOS中SSHD服务启动失败,因权限问题导致的一步步排查过程,包括权限调整、符号链接设置和错误修复,适合运维人员参考。

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

前言

美好的一天,从帮人运维开始

问题

朋友报过来的问题如下:

[root@VM-0-16-centos /]# systemctl start sshd
Error getting authority: Error initializing authority: Could not connect: No such file or directory (g-io-error-quark, 1)
Job for sshd.service failed because the control process exited with error code. See"systemctl status sshd.service" and"journal
ctl -xe" for details
[root@VM-0-16-centos /]#

解决思路和方法

Permissions 0644 for '/etc/ssh/ssh_host_xxxxx_key'are too open

然后用systemctl status sshd. service命令查看sshd的状态,

[root@VM-0-16-centos /]#systemclt status sshd.service
● sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
   Active: activating Cauto-restart)(Result: exit-code) since Sun 2021-89-05 09: 30: 18 CST: 12s ago
     Docs: man:sshd(8)
           man:sshd_config(5)
   Process: 13561 ExecStart=/usr/sbin/sshd -D $OPTIONS (code=exited, status=1/FAILURE)
  Main pid: 13561 (code=exited status=1/FAIlURE)
Sep 85 89: 30: 18 VM-8-16-centos sshd[13561]: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Sep B5 89: 30: 18 VM-9-16-centos sshd[13561]: Permissions 8644 for/etc/ssh/ssh_host_ed25519_key‘are too open
Sep 05 89: 30: 18 VM-0-16-centos sshd[13561]:It is required that your private key files are NoT accessible by others
Sep 05 89: 30: 18 VM-0-16-centos sshd[13561]: This private key will be ignored
Sep 85 89: 30: 18 UM-0-16-centos sshd[13561]: key_load_private: bad permissions
Sep 05 89: 30: 18 UM-0-16-centos sshd[13561]: Could not load host key: /etc/ssh/ssh_host_ed25519_key
Sep 05 89: 30: 18 VM-8-16-centos sshd[13561]: sshd: no hostkeys available -- exiting
Sep 05 89: 30: 18 UM-0-16-centos system[1]: Failed to start OpenSSH server daemon
Sep 05 89: 30: 18 UM-0-16-centos systemd[1]: Unit sshd.service entered failed state
Sep 05 89: 36: 18 UM-0-16-centos systemd[1]: sshd.service failed
[root@VM-0-16-centos /]#

 

发现有一句报错是

Permissions 0644 for '/etc/ssh/ssh_host_ed25519_key' are too open

这句话就是说的是你的这个key文件的权限过高

我们把权限调整一下

chmod 600 /etc/ssh/ssh_host_ed25519_key

再然后用sshd -t检查一下,结果发现还有错,这次是说了/etc/ssh/ssh_host_rsa_key这个文件的权限过高

Permissions 0744 for '/etc/ssh/ssh_host_rsa_key' are too open

同样的修改权限

chmod 600 /etc/ssh/etc/ssh/ssh_host_rsa_key

Missing privilege separation directory: /var/empty/sshd

再然后用sshd -t检查一下,结果发现还有错,这次是说了

Missing privilege separation directory: /var/empty/sshd

 

这个报错的原因是,当我们启动sshd的时候,它会寻找“localtime”的符号链接(软链接),如果找不到,则会导致以下错误消息。

启动sshd:缺少权限分离目录:/var/empty/sshd

mkdir -p /var/empty/sshd/etc
cd /var/empty/sshd/etc/
ln -s /etc/localtime localtime

 最后再用sshd -t检查一下,发现没有问题,查看sshd的服务状态。正常运行。问题解决

总结

美好的一天,从解决问题开始,好的,这下子又水了一篇博客了。

写在后面

如果觉得有用的话,麻烦一键三支持一下攻城狮白玉并把本文分享给更多的小伙伴。你的简单支持,我的无限创作动力

 

 

 

<think>好的,我现在需要帮助用户解决CentOS 7 SSH无法连接的问题。首先,我得回想一下常见的SSH连接问题可能出在哪里。用户提到的是“connection refused”,这通常意味着服务没在监听,或者防火墙阻止了连接。 首先,我应该检查SSH服务是否已经安装并运行。在CentOS 7中,可能用的是openssh-server,所以需要确认是否安装了,并且sshd服务是否启动。用户可能需要运行systemctl status sshd来查看状态,如果没运行,就启动它。记得还要设置开机自启,用systemctl enable sshd。 接下来,如果服务已经运行,但连接被拒绝,可能是防火墙的问题CentOS 7默认使用firewalld,所以需要检查是否开放了22端口。用户可能需要执行firewall-cmd --add-service=ssh --permanent然后重载防火墙规则。另外,SELinux有时候也会干扰,可能需要暂时禁用或者调整策略。 然后,检查SSH配置文件的设置。比如,配置文件/etc/ssh/sshd_config中的ListenAddress是否绑定到了正确的IP,Port是否正确,以及是否允许root登录或者密码认证。如果修改了配置,需要重启sshd服务。 还有,网络问题也不能忽视。用户需要确认客户端是否能ping通服务器,是否有网络设备阻断了22端口的流量。使用netstat -tuln | grep 22可以查看服务是否在监听正确端口。如果服务器在本地虚拟机,检查网络模式是否正确,比如NAT还是桥接。 此外,查看日志文件有助于诊断问题。用户可以用journalctl -u sshd或者查看/var/log/secure中的日志,寻找错误信息。比如,如果看到“Did not receive identification string”,可能配置有关。 最后,如果以上步骤都无效,可能需要考虑重新安装openssh-server,或者检查是否有其他安全软件干扰。比如,某些第三方防火墙或者入侵检测系统可能阻止了连接。 现在,我需要把这些步骤整理成清晰的解决方案,分点列出,确保用户能逐步操作。同时,生成相关的问题,帮助用户进一步排查可能的相关问题。</think>### CentOS 7 SSH连接被拒绝的解决方案 #### 1. 检查SSH服务状态 - **确认SSH服务已安装**: 运行命令 `rpm -qa | grep openssh-server`,若未安装则执行 `yum install openssh-server`。 - **启动并启用SSH服务**: ```bash systemctl start sshd # 启动服务 systemctl enable sshd # 设置开机自启 systemctl status sshd # 检查状态(应显示“active (running)”) ``` 若状态异常,检查日志:`journalctl -u sshd`[^3]。 #### 2. 防火墙配置 - **开放22端口**: ```bash firewall-cmd --permanent --add-service=ssh # 添加SSH服务规则 firewall-cmd --reload # 重载防火墙 ``` - **临时关闭防火墙测试**(仅调试用): ```bash systemctl stop firewalld # 关闭防火墙 systemctl disable firewalld # 禁止开机启动(谨慎操作) ``` #### 3. 检查SSH配置文件 编辑 `/etc/ssh/sshd_config`,确保以下配置项: ```bash Port 22 # 默认端口 ListenAddress 0.0.0.0 # 允许所有IP连接 PermitRootLogin yes # 允许root登录(生产环境建议关闭) PasswordAuthentication yes # 启用密码认证 ``` 修改后重启服务:`systemctl restart sshd`[^1]。 #### 4. SELinux干扰排查 - **临时禁用SELinux**: ```bash setenforce 0 # 临时关闭 getenforce # 检查状态(应显示“Permissive”) ``` - **永久禁用需修改** `/etc/selinux/config`,设置 `SELINUX=disabled`。 #### 5. 网络与端口监听验证 - **确认SSH端口监听**: ```bash netstat -tuln | grep 22 # 应显示“0.0.0.0:22”或“:::22” ``` - **测试本地连接**: ```bash ssh localhost # 本地连接测试 ``` 若本地成功但远程失败,检查网络路由或云服务器安全组规则[^2]。 #### 6. 客户端连接命令示例 ```bash ssh username@服务器IP -p 22 -v # 使用-v参数查看详细错误信息 ``` ---
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

攻城狮白玉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值