ssh - 在非 22 端口的 Amazon EC2 实例上运行 ssh

标签 ssh amazon-ec2 cloud

我无法通过 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 实例:

  • 打开您的实例的安全组,以便它允许从您选择的源(对于任何源为 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
    请注意,这仅在您启动新实例时有效:

    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/

    相关文章:

    ssh - 带有 Docker Provider 的 Vagrant 因 rsync over ssh 而失败

    ssh - 如何使用 Ansible 和用户模块将现有公钥添加到 authorized_keys 文件?

    web-services - 哪些类型的工作负载适合在 Amazon EC2 Spot 实例上使用?

    tomcat - 亚马逊 ec2 网站发布

    kubernetes - 从 EOF metric-server kubernetes 获取 TLS 握手错误

    c# - 用于分布式桌面和 Web 应用程序的 Azure 服务

    Mercurial over ssh 与配置文件

    amazon-ec2 - 为什么我会得到 "Your account does not support the EC2-Classic Platform in this region."?

    node.js - 无法为连接配置文件 hlfv1 加载连接器模块 composer-connector-hlfv1

    ruby-on-rails - 无法运行上限生产部署:使用 Net::SSH::AuthenticationFailed 初始化:用户身份验证失败?