已经正常安装ssh: connect to host 192.168.4.254 port 22: Connection refused

本文详细介绍了如何在Linux系统中配置SSH服务,包括修改ssh_config和sshd_config文件,设置正确的文件权限,以及重启sshd服务来实现更安全的远程访问。

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

[root@cm-node03 ~]#  cd /etc/ssh/
[root@cm-node03 ssh]# ll
total 604
-rwxrwxr-x  1 root root     581843 Aug  9  2019 moduli
-rw-r--r--  1 root root       2276 Aug  9  2019 ssh_config
-rw-------  1 root root       3907 Aug  9  2019 sshd_config
-rw-r-----. 1 root ssh_keys    227 Dec 28  2018 ssh_host_ecdsa_key
-rw-r--r--. 1 root root        162 Dec 28  2018 ssh_host_ecdsa_key.pub
-rw-r-----. 1 root ssh_keys    387 Dec 28  2018 ssh_host_ed25519_key
-rw-r--r--. 1 root root         82 Dec 28  2018 ssh_host_ed25519_key.pub
-rw-r-----. 1 root ssh_keys   1675 Dec 28  2018 ssh_host_rsa_key
-rw-r--r--. 1 root root        382 Dec 28  2018 ssh_host_rsa_key.pub
[root@cm-node03 ssh]#
chmod 644 ssh_config
chmod 640 sshd_config
chmod 600 sshd_config
chmod 640 ssh_host_ecdsa_key
chmod 644 ssh_host_ecdsa_key.pub
chmod 640 ssh_host_ed25519_key
chmod 644 ssh_host_ed25519_key.pub
chmod 640 ssh_host_rsa_key
chmod 644 ssh_host_rsa_key.pub
systemctl restart sshd

即可远程访问

<think>好的,用户遇到了SSH连接问题,提示“ssh: connect to host 192.168.1.152 port 22: Connection refused”。我需要帮他们分析可能的原因和解决方法。首先,应该检查目标主机的SSH服务是否运行,可能没安装或者没启动。然后,确认防火墙是否阻止了22端口的连接,或者是否有网络问题,比如IP地址错误。另外,SSH服务器配置可能修改了端口,导致默认的22端口不可用。还有可能是目标主机本身不在线,或者用户权限问题。需要分步骤引导用户逐一排查,从基本检查开始,比如ping测试,检查服务状态,查看端口监听情况,最后检查防火墙和配置。同时提醒用户注意IP和端口的正确性,以及可能的权限设置。需要保持语言简单明了,避免技术术语过多,让用户容易理解和操作。</think>遇到 `ssh: connect to host 192.168.1.152 port 22: Connection refused` 错误时,说明 SSH 客户端无法与目标主机建立连接。以下是逐步排查和解决的思路: --- ### 1. **确认目标主机是否在线** - **操作**:在本地终端执行 `ping 192.168.1.152`。 - **可能结果**: - 若 **无响应**:目标主机未开机、网络断开或 IP 地址错误。 - 若 **有响应**:继续下一步排查。 --- ### 2. **检查 SSH 服务是否运行** - **目标主机需执行**(需物理访问或通过其他方式登录): ```bash systemctl status sshd # 适用于 systemd 系统(如 Ubuntu 18.04+、CentOS 7+) service sshd status # 适用于旧版 SysVinit 系统 ``` - **可能问题**: - 服务未安装:需安装 OpenSSH 服务(`sudo apt install openssh-server` 或 `sudo yum install openssh-server`)。 - 服务未启动:执行 `sudo systemctl start sshd`。 --- ### 3. **确认 SSH 端口监听状态** - **目标主机执行**: ```bash netstat -tuln | grep :22 ``` - **正常结果**:显示 `tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN`。 - **异常情况**: - 无输出:SSH 未监听 22 端口,可能配置文件中修改了端口(见步骤 4)。 - 仅 `127.0.0.1:22`:SSH 仅允许本地连接,需修改配置文件中的 `ListenAddress`。 --- ### 4. **检查 SSH 服务器配置** - **目标主机配置文件路径**:`/etc/ssh/sshd_config`。 - **关键参数**: ```bash Port 22 # 确认端口是否为 22(若修改过需用 -p 指定端口连接) ListenAddress 0.0.0.0 # 确保监听所有 IP PermitRootLogin yes # 是否允许 root 登录(非必须,但可临时测试) ``` - **修改后重启服务**:`sudo systemctl restart sshd`。 --- ### 5. **检查防火墙或安全组规则** - **目标主机可能拦截方式**: - **本地防火墙**(如 `ufw` 或 `firewalld`): ```bash sudo ufw status # Ubuntu 查看防火墙状态 sudo firewall-cmd --list-ports # CentOS 查看开放端口 ``` - **云服务器安全组**:确保入方向允许 TCP 22 端口。 - **临时关闭防火墙测试**(仅调试用): ```bash sudo ufw disable # Ubuntu sudo systemctl stop firewalld # CentOS ``` --- ### 6. **尝试指定端口连接** - 若目标主机修改了 SSH 端口(如 2222),需显式指定端口: ```bash ssh -p 2222 username@192.168.1.152 ``` --- ### 7. **其他可能原因** - **IP 冲突**:同一局域网内有其他设备使用 `192.168.1.152`。 - **网络路由问题**:跨网段时需检查路由表和子网掩码。 - **SSH 客户端限制**:检查本地 `~/.ssh/config` 文件是否有特殊配置。 --- ### 总结步骤 1. 确认目标主机在线 → 2. 检查 SSH 服务状态 → 3. 验证端口监听 → 4. 检查配置文件 → 5. 关闭防火墙调试 → 6. 指定端口重试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值