51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

Linode SSH 无法连接的解决办法记录

今天帮朋友处理 Linode VPS IP 可以 ping 通,但是 SSH 无法连接的问题。此朋友的 Linode VPS 为 Fremont 机房,SSH 端口为 22。

我通过后台 Lish Web Console 进入网页 ssh 连接,修改了 SSH 的端口。再次 xshell 连接,依旧连接不上(后来找到原因应该是没有把新的 SSH 端口号加入防火墙端口白名单里)

于是 remove 掉,重新选了德国 Frankfurt 机房,配置系统选择 CentOs 6.8,启动之后 Xshell 连接,SSH 默认 22 端口,填入 root 和密码,连接,正常!

既然此时 22 端口 SSH 连接正常,趁着正常赶紧改 SSH 端口。

修改之前,使用以下命令,把配置文件做个备份。

cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

1、修改 SSH 配置 {#1_SSH}

按照这个 /etc/ssh/sshd_config 路径,把 sshd_config 的文件下载下来,用 notepad++编辑打开。

默认我们可以看到有 22 端口,这里我们再添加一行 Port 自定义的端口。这里需要注意 22 的一行不直接删除,防止设置错误导致的无法登录。

即:

#Port 22 这一行把 # 去掉,然后再加一行要换用的端口号。随便任何 5 位端口数字(≤65536),比如:20028

最终为:

Port 22
Port 20028

保存。上传覆盖。

2、设置防火墙 {#2}

注意:如果你是 CentOS 7 及以上版本,依次执行下面 4 行命令:

第二行命令在 sshd_config 中有提示:

If you want to change the port on a SELinux system, you have to tell

SELinux about this change.

semanage port -a -t ssh_port_t -p tcp #PORTNUMBER

semanage port -a -t ssh_port_t -p tcp 20028
firewall-cmd --permanent --zone=public --add-port=20028/tcp (如果防火墙服务没开,可能会提示你 FirewallD is not running。如果是这样,下面两条命令就不用输入了。)
firewall-cmd --add-port 20028/tcp
firewall-cmd --reload

如果碰到提示错误"-bash: semanage: command not found",则先安装 semanage。依次执行:

yum provides semanage
yum install policycoreutils-python -y

执行完这两条命令(第 2 条安装会慢一点,耐心等待安装完毕),重新执行上面提到的 4 条命令。

如果你是 CentOS 6.x,执行下面的命令:

iptables -I INPUT -p tcp --dport 20028 --syn -j ACCEPT
service iptables save
semanage port -a -t ssh_port_t -p tcp 20028

3、重启 SSH 服务 {#3_SSH}

注意:如果你是 CentOS 7 及以上版本,依次此重启命令:

systemctl restart sshd.service

如果你是 CentOS 6.x,执行下面的命令:

service sshd restart

4、查看已提交 SELinux 的 SSH 端口记录 {#4_SELinux_SSH}

重启之后,使用命令查看端口号:

semanage port -l | grep ssh

如果一切正常,应该显示:ssh_port_t tcp 20028, 22 两个端口。

  1. 用新的端口号进行 SSH 连接 {#5_SSH}

我们再次打开一个 Xshell 连接,把 xshell 里连接会话属性的 ssh 端口从 22 改成 20028,然后连接。

如果连接得通,重复步骤 1 一遍,把 Port 22 那行删除,然后保存,上传覆盖。

覆盖完后,重启 SSHD 服务。

6、查看目前系统开放的 SSH 端口 {#6_SSH}

ss -tnlp | grep ssh

正常情况下,应该看到两条新端口号的记录。类似于:

LISTEN 0 128 *:20028 *:* users:(("sshd",pid=xxxx,fd=3))
LISTEN 0 128 :::20028 :::* users:(("sshd",pid=xxxx,fd=4))

这就说明目前 SSH 端口关闭了默认的 22 端口(避免了 N 多网络端口扫描工具的扫描),启用了新的 20028 端口。

OK,搞定。

经过上面这六个步骤,即可开始安心地控制 VPS 了。

赞(0)
未经允许不得转载:工具盒子 » Linode SSH 无法连接的解决办法记录