在22以外的端口上的Amazon EC2实例上运行ssh

Jas*_*per 13 cloud ssh amazon-ec2

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

我尝试使用以下"用户数据"通过Web管理控制台启动Amazon EC2实例:

#!/bin/bash -ex
perl -pi -e 's/^#?Port 22$/Port 80/' /etc/ssh/sshd_config
service sshd restart || service ssh restart
Run Code Online (Sandbox Code Playgroud)

这个想法是上面的脚本将在实例启动时执行并将ssh从端口22切换到端口80.(参考:http://alestic.com/2010/12/ec2-ssh-port-80)

但是仍然无法在端口80上访问ssh.显然,"用户数据"脚本在启动时没有被执行?

我只能"通过Web管理控制台"启动停止实例,而不是从命令行启动停止实例(在防火墙后面)

有任何想法吗?

gug*_*gol 16

要通过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

请注意,这仅在您启动新实例时才有效:

用户数据脚本和cloud-init指令仅在启动实例的第一个引导周期内运行.

  • 如果它不是新的实例,编辑/etc/ssh/sshd_config文件添加/更改Port 22到您想要的端口(即Port 443:)通过ssh连接然后执行service ssh restart,您应该完成.

注意:我使用Ubuntu实例执行此操作,其他Linux实例可能略有不同.


Jen*_*ens 10

亚马逊防火墙阻止除22之外的所有端口.首先必须启用端口80/443 /无论如何.

HOWTO:转到"安全组" - >单击您为实例选择的组,然后单击"入站"选项卡.

在那里你可以添加你的端口.

编辑:如果您偶然也安装了apache或其他一些网络服务器,将使用端口80,sshd无法使用.我不知道您的服务器上安装了哪个操作系统,但是可能已经包含了一些Web服务器?

  • 可能是这样,但如果您没有配置Amazon防火墙,那么 - 默认情况下 - 只有端口22打开.我正是这个意思. (5认同)