我开始了sudo systemctl start sshd
,但我无法从外部连接到 CentOS 7 机器。但是,在 CentOS 7 机器上,我可以通过ssh
.
我错过了什么?
日期 #1
我根据 slm 的回答确认了以下内容:
sshd
服务已启动并绑定到 IP 131.181.10.150 上的端口 22- 我可以执行
curl -v telenet://131.181.10.150:22
并查看“已连接”消息。
我的问题是当我尝试访问ssh
服务器时:
$ ssh [email protected]
ssh: connect to host 131.181.10.150 port 22: Operation timed out
日期 #2
我记得当我使用docker-compose
它开始下载容器时,我突然失去了启动ssh
连接的能力。
查看使用ip link show
打开的docker0
NIC + 许多其他接口的接口数量。
然后我尝试禁用 Docker 服务和防火墙,但我仍然无法连接。
$ sudo systemctl stop docker
$ sudo systemctl stop firewalld
仍然没有运气。
通过
sshd
服务,设置和开始使用非常简单。1.启动服务
确保服务已启动并在端口 22 上运行/侦听。
启动服务 检查状态2. 验证服务正在监听
检查是否监听 22 端口您还需要验证是否
sshd
正在侦听所有接口 (0.0.0.0) 或至少是您系统的 IP 地址:因此,您会在
netstat
输出中看到 192.168.56.101:22,例如。3.防火墙
接下来检查防火墙是否允许网络流量到达端口 22。
如果是这样,那么流量可以到达端口 22。如果看起来像这样:
它允许
ssh
&dhcpv6-client
服务的流量和其他一切的流量。同样,这没问题,应该允许 SSH 流量进入。4.检查
/etc/ssh/sshd_config
确认您
/etc/ssh/sshd_config
没有阻止外部连接。以下选项的设置应类似于我在下面显示的内容。5. 验证
您可以从您的一个外部客户端使用这样的命令进行确认:
注意:如果您在此处看到“已连接到 XXXX”IP 地址消息,则说明从您正在运行的客户端计算机
curl
到sshd
服务器的网络流量没有任何限制。6. 码头工人
在某些情况下,例如安装了 Docker 的地方,您会遇到网桥在
docker0
网桥中添加了多个虚拟网络的场景docker0
。你可以像这样看到它们:在这些情况下,您需要删除任何额外的网络来恢复您的物理网络,以便它能够正确路由 SSH 数据包。只需使用该命令
docker network rm <net id>
删除标准之外的任何内容bridge
,host
和none
.参考