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

料神Sam2018-09-18Toolkit,Web技术7498 次访问8 评论

今天帮朋友处理 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 配置

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

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

即:

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

最终为:

Port 22
Port 20028

保存。上传覆盖。

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 服务

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

systemctl restart sshd.service

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

service sshd restart

4、查看已提交 SELinux 的 SSH 端口记录

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

semanage port -l | grep ssh

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

5. 用新的端口号进行 SSH 连接

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

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

覆盖完后,重启 SSHD 服务。

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 了。

本站所有文章除注明“转载”的文章之外,均为原创。未经本站允许,请勿随意转载或用作任何商业用途,否则依法追究侵权者法律责任的权利。

分享到: 微信 新浪微博 QQ Qzone
料神Sam
料神Sam
识不足则多虑,威不足则多怒,信不足则多言。

8条评论

发表我的评论

取消评论

邮箱白名单说明:最近料网自动提醒邮件经常会被一些邮件服务商拦截。为了您顺利并及时地收取留言被回复的提醒邮件,请在您邮箱中把料网 liaosam.com 加入白名单域名。

我不是机器人
设为私密评论
添加表情

Hi,您需要填写昵称和邮箱!

您的邮箱地址不会公开,仅仅用于收取回复。建议填写QQ邮箱,不宜填写工作邮箱。
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址 (没有就留空)
呃,评论有点多呢... 料网小秘书为您玩命加载中...
  1. #0
    Luis

    第二步设置防火墙的时候按步骤操作显示: -bash: semanage: command not found CentOS 6.8 系统. 第四步也是显示: -bash: semanage: command not found 步骤没错我检查几次了, 怎么处理?

    2年前 (2020-04-13)回复
    • Nana

      @Luis 好像老大这个命令有点儿错误,我之前用 CentOS6.8 的时候,也折腾了半天。要不你换成 CentOS7 以上的吧,我刚弄命令是对的。

      2年前 (2020-04-15)回复
      • happyluis

        @Nana semanage port -a -t ssh_port_t -p tcp 20028 这个指令不对

        2年前 (2020-04-20)回复
      • Luis

        @Nana 我已经成功修改了, 按照这个论坛军哥的方法 https://bbs.vpser.net/forum.php?mod=viewthread&tid=1748&highlight=ssh 注意: 修改成功后输入 semanage port -l | grep ssh 依然会只显示 22 端口. 在 xshell 用 新端口能链接上.

        2年前 (2020-04-21)回复
  2. #0
    朱丽叶

    该评论为私密评论

    4年前 (2018-09-20)回复
  3. #0
    朱丽叶

    该评论为私密评论

    4年前 (2018-09-20)回复
    • 料神Sam
      Liaosam,外贸综合症患者。
      @朱丽叶 机房选了法兰克福的也 xshell 链接不上吗?如果是,QQ 上联系我。
      4年前 (2018-09-20)回复
      • 朱丽叶

        @Liaosam 该评论为私密评论

        4年前 (2018-10-09)回复