在超过22个其他港口在Amazon EC2实例中运行的ssh(Running ssh on Amaz

2019-08-02 23:46发布

我无法通过SSH访问Amazon EC2实例,因为我在防火墙后面。 所以,我想在除22以外,像端口80或443运行的ssh的。

我通过Web管理控制台试图启动Amazon EC2实例有以下“用户数据”:

#!/bin/bash -ex
perl -pi -e 's/^#?Port 22$/Port 80/' /etc/ssh/sshd_config
service sshd restart || service ssh restart

这个想法是,在上述脚本将执行对实例启动时和从端口22切换ssh来端口80(参考文献: http://alestic.com/2010/12/ec2-ssh-port-80 )

但是,SSH是仍然没有在端口80访问显然,“用户数据”脚本没有在启动时执行?

我也“仅仅”通过Web管理控制台启动,停止的情况下,不通过命令行(即位于防火墙背后)

有任何想法吗?

Answer 1:

通过SSH从比默认的22端口不同的端口连接到AWS实例:

  1. 打开实例的安全组,使其允许从您选择的来源(0.0.0.0/0任何源)端口连接。
  2. 在您的实例:

    • 这是一个新的实例,你可以使用像这样的一个用户数据脚本:

    #!/bin/bash -ex perl -pi -e 's/^#?Port 22$/Port 443/' /etc/ssh/sshd_config service sshd restart || service ssh restart

请注意,如果你正在推出一个新的实例这仅适用:

用户数据脚本和云的初始化指令,当一个实例启动第一个启动周期中只运行。

  • 如果它不是一个新的实例,编辑/etc/ssh/sshd_config文件添加/更改Port 22到你想要的(即:端口Port 443 )通过SSH连接,然后做service ssh restart ,你应该做的。

注:我这样做是与Ubuntu的情况下,与其他Linux实例可能会略有不同。



Answer 2:

亚马逊防火墙会阻止所有端口比22等你首先必须启用端口80/443 /不管。

HOWTO:进入“安全组” - >点击你选择了您的实例,那么“入境”选项卡上的组。

在那里,你可以添加你的端口。

编辑:如果碰巧你也安装了Apache或其他一些网络服务器,端口80将使用,并且不能由sshd的使用。 我不知道是哪个操作系统已安装在服务器上,但也许有些Web服务器已经包含?



文章来源: Running ssh on Amazon EC2 instance on port other than 22