我无法通过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管理控制台启动,停止的情况下,不通过命令行(即位于防火墙背后)
有任何想法吗?
通过SSH从比默认的22端口不同的端口连接到AWS实例:
- 打开实例的安全组,使其允许从您选择的来源(0.0.0.0/0任何源)端口连接。
在您的实例:
- 这是一个新的实例,你可以使用像这样的一个用户数据脚本:
#!/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实例可能会略有不同。
亚马逊防火墙会阻止所有端口比22等你首先必须启用端口80/443 /不管。
HOWTO:进入“安全组” - >点击你选择了您的实例,那么“入境”选项卡上的组。
在那里,你可以添加你的端口。
编辑:如果碰巧你也安装了Apache或其他一些网络服务器,端口80将使用,并且不能由sshd的使用。 我不知道是哪个操作系统已安装在服务器上,但也许有些Web服务器已经包含?