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

LiaoSam2018-09-18Toolkit,Web技术4607 次访问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 了。

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

分享到微信朋友圈

LiaoSam
LiaoSam
识不足则多虑,威不足则多怒,信不足则多言。

8条评论

发表我的评论

取消评论

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

已读说明
设为私密评论
添加表情

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

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

    第二步设置防火墙的时候按步骤操作显示: -bash: semanage: command not found
    CentOS 6.8系统.

    第四步也是显示: -bash: semanage: command not found
    步骤没错我检查几次了, 怎么处理?

    5个月前 (04-13)回复
    • Nana

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

      5个月前 (04-15)回复
      • happyluis

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

        5个月前 (04-20)回复
      • Luis

        @Nana 我已经成功修改了, 按照这个论坛军哥的方法 https://bbs.vpser.net/forum.php?mod=viewthread&tid=1748&highlight=ssh%2B%E7%AB%AF%E5%8F%A3

        注意: 修改成功后输入 semanage port -l | grep ssh 依然会只显示 22 端口. 在xshell 用 新端口能链接上.

        5个月前 (04-21)回复
  2. #2
    朱丽叶

    该评论为私密评论

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

    该评论为私密评论

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

        @Liaosam 该评论为私密评论

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