Запуск ssh на экземпляре Amazon EC2 на порту, отличном от 22

Я не могу получить доступ к экземпляру Amazon EC2 через ssh, поскольку я за брандмауэром. Итак, я думал о запуске ssh на порту, отличном от 22, например, 80 или 443.

Я попытался запустить экземпляр Amazon EC2 через Web Management Console со следующими "пользовательскими данными":

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

Идея состоит в том, что вышеприведенный script будет выполняться при запуске экземпляра и переключать ssh из порта 22 в порт 80. (Ссылка: http://alestic.com/2010/12/ec2-ssh-port-80)

Но ssh пока недоступен на порту 80. По-видимому, "пользовательские данные" script не запускаются при запуске?

Я могу "только" запускать экземпляры с помощью веб-консоли управления, а не из командной строки (находясь за брандмауэром)

Любые идеи?

Ответ 1

Чтобы подключиться к экземпляру AWS через ssh с порта, отличного от значения по умолчанию 22:

  • Откройте группу безопасности вашего экземпляра, чтобы он мог подключаться к этому порту из выбранного вами источника (0.0.0.0/0 для любого источника).
  • В вашем случае:

    • Это новый экземпляр, в котором вы можете использовать пользовательские данные script, подобные этому:

    #!/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 могут немного отличаться.

Ответ 2

Брандмауэр Amazon блокирует все порты, отличные от 22. Сначала вам нужно включить порт 80/443/whatever.

МЕТОДИЧЕСКИЕ: Перейдите в "группы безопасности" → нажмите на группу, которую вы выбрали для своего экземпляра, а затем на вкладке "Входящие".

Там вы можете добавить свои порты.

EDIT: Если случайно вы также установили apache или какой-либо другой веб-сервер, порт 80 будет использоваться и не может использоваться sshd. Я не знаю, какая операционная система установлена ​​на вашем сервере, но, возможно, какой-то веб-сервер уже включен?

Ответ 3

Вот что я придумал для запуска sshd на 443 и 22 с rhel8 на ec2

  1. убедитесь, что ваши группы безопасности разрешают подключение из вашей сети /ip к нужным портам (в моем случае 22 и 443)
tcp 443 1.2.3.4/32 #allow access to 443 from IP 1.2.3.4
tcp 22 1.2.3.4/32 #allow access to 22 from IP 1.2.3.4
  1. Войдите в EC2 и
#install semanage with
sudo yum install -y policycoreutils-python-utils
#delete 443 from http ports
sudo semanage port -d -t http_port_t -p tcp 443
#add 443 to ssh ports
sudo semanage port -m -t ssh_port_t -p tcp 443
  1. Отредактируйте /etc/ssh/sshd_config
Port 22
Port 443
  1. Перезапустите sshd
sudo service sshd restart