我无法通过 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
想法是上面的脚本将在实例启动时执行并将 ssh 从端口 22 切换到端口 80。(引用:http://alestic.com/2010/12/ec2-ssh-port-80)
但是 ssh 仍然无法在端口 80 上访问。
显然“用户数据”脚本没有在启动时执行?
我只能通过 Web 管理控制台启动停止实例,而不是从命令行(在防火墙后面)
有任何想法吗?
最佳答案
要通过 ssh 从不同于默认 22 的端口连接到 AWS 实例:
#!/bin/bash -ex
perl -pi -e 's/^#?Port 22$/Port 443/' /etc/ssh/sshd_config
service sshd restart || service ssh restart
请注意,这仅在您启动新实例时有效:
User data scripts and cloud-init directives only run during the first boot cycle when an instance is launched.
/etc/ssh/sshd_config
文件添加/更改 Port 22
到您想要的端口(即: Port 443
)通过 ssh 连接,然后执行 service ssh restart
你应该完成。 注意:我是在一个 Ubuntu 实例上做的,另一个 Linux 实例可能略有不同。
关于ssh - 在非 22 端口的 Amazon EC2 实例上运行 ssh,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13475303/