There are questions remain, We'll search for the answers together. But one thing we known for sure,the future is not set!

【原创文章】亚马逊AWS EC2 REDHAT LINUX系统修改SSH端口后无法登陆的解决办法

系统防护 百蔬君 10295℃ 已收录 2评论

一家主要面向国外用户的大型APP制作公司,他们的主要业务是在线销售视频转换,苹果系统APP等软件的销售,所有APP都是自己公司研发,非常有前景,这几年也有了起色,最近他们网站遭到大量的CC攻击,慢速攻击slowhttptest尤其为甚,网站每天被关闭,基本无法打开,损失巨大。后台找到我,我上线帮忙看了下,从日志来看,慢速攻击达到了理想的效果,没有多少进程就把整个网站搞崩溃了。处理慢速攻击自然有一套办法,就像CC一样,从日志挖掘符合网站实际的安全策略,很快就会见效果。
今天想说的是另外一个问题,那就是SSH问题。昨天,那边反应网站经常打不开,出现500错误,我就登陆SSH看下是什么情况,发现ssh竟然有人尝试了几千次,这是暴力破解密码啊.

于是就想修改这个SSH端口。修改亚马逊AWS EC2的SSH端口有3个地方需要注意。
第一个是修改sshd配置文件。直接用vi命令.
vi /etc/ssh/sshd_config
把port 22前面的#取消,同事在下面添加一个你想修改的端口,比如port 8080。切记:这里千万暂时不要删除port 22,在你确认8080可以登陆之后再删除port 22端口,不然无法登陆就悔之晚矣!!

第二个地方是开放系统防火墙端口。
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT

把8080端口放开,不然无法打开。

第三个地方是很多人忽略的地方,那就是亚马逊AWS EC2的安全组策略,这个是比系统更高一级的防火墙,必须登陆亚马逊AWS后台来设置。

注意一点的是这个是你的实例所使用的安全规则,要一一对应。

正常来说,开启了这3格之后应当就可以访问了。

但是我却遇到了SSH无法登陆的问题。

从putty的密码登陆,private key登陆到亚马逊AWS EC2管理后台的实例链接的mindterm登陆,统统都不行。

Error connecting to ec2-55-777-47-111.us-west-2.compute.amazonaws.com, reason: -> Connection refused: no further information

就是提示我无法连接,没用任何有用的信息。经过无数次尝试都无法登陆解决。最开始我以为亚马逊AWS EC2也有类似KVM之类的本地登陆的工具,但是当我打开mindterm发现,他同样是ssh 公网登陆。之后,在支持系统提交了问题,半天也没有反应。

AWS EC2是没有web console的,非常滴悲催!!

这时,自己思考了一个方案,在群里讨论了一下,这个方案就是在后台再重新建一个实例,然后把原来那个实例的硬盘挂在这个新的实例里面,这样就可以看是什么问题了。经过了多次尝试,觉得这个方案可能性是可能的,到了晚上1点多,客服也回复了,大概意思差不多,看来我原本的思路是正确的,经过了1个小时折腾,到了差不多3点,这时候还是没有解决,决定睡觉,睡觉再思考一下。

躺在床上琢磨了一下,清晰了思路,早上7点爬起来,成功搞定这个事情。

限制把过程分享一下。

首先新建一个实例,选择之,点击“操作”,请选择“启动更多类似项”

这样的好处就是可以使用原来的key,不用再重新搞了。

新建好之后,在卷(volume)处首先将原来实例所用的卷断开,然后将这个卷辅导新建的实例上。选择脱离的卷,点击“操作”,把这个卷加到新建实例,注意选择就好了。

加载之后,怎样使用呢?

首先登陆新建实例,运行lsblk命令,查看加载磁盘清空,

如图,就可以看到加载2格磁盘,一个10g,一个100g,之后允许命令sudo mkdir daokers新建一个目录,把新的磁盘加载到这个新目录下,默认的话这个路径为“root/daokers”

允许命令sudo file -s /dev/xvdf,查看磁盘情况。

如果出现诸如此类的信息

[root ~]$ sudo file -s /dev/xvda1
/dev/xvda1: Linux rev 1.0 ext4 filesystem data, UUID=1701d228-e1bd-4094-a14c-8c64d6819362 (needs journal recovery) (extents) (large files) (huge files)

说明这个磁盘有文件,是我们旧实例的文件。加载到新的目录下,允许命令sudo mount /dev/vsdf /root/daokers,则将新磁盘加载到了daokers目录,这时候可能很多都会加载不成功,就想上图一样,出现错误,这时候可以使用dmesg | tail命令查看具体错误。

[180875.598481] XFS (xvdf2): Filesystem has duplicate UUID 379de64d-ea11-4f5b-ae6a-0aa50ff7b24d - can't mount
[180970.058345] XFS (xvdf2): Filesystem has duplicate UUID 379de64d-ea11-4f5b-ae6a-0aa50ff7b24d - can't mount

这样就知道具体的加载出错的原因了。

运行命令sudo mount -o nouuid /dev/xvdf1 /mnt修复之,/dev/xvdf1是你的具体磁盘名。这样就能成功加载了。

打开旧磁盘文件,恢复所有的配置文件。重新将旧磁盘加载到旧的实例,加载的时候”设备“这里一定要填写/dev/sda1,说明这个盘是根目录,不然无法启动实例的。

好了,这样就成功登陆就的实例了。说了这个方法看起来问题就简单了,但是当没人分享的时候,可能得摸索很久很久,分享快乐!!!

几篇参考文献:
http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ebs-attaching-volume.html
http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ebs-using-volumes.html
http://serverfault.com/questions/779438/error-on-ec2-volume-mount

转载请注明:百蔬君 » 【原创文章】亚马逊AWS EC2 REDHAT LINUX系统修改SSH端口后无法登陆的解决办法

喜欢 (6)or分享 (0)
发表我的评论
取消评论

请证明您不是机器人(^v^):

表情
(2)个小伙伴在吐槽
  1. 作者在吗
    匿名2020-03-08 01:02 回复