Запуск 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:
Обратите внимание, что это работает только при запуске нового экземпляра:
Скрипты пользовательских данных и директивы 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
- убедитесь, что ваши группы безопасности разрешают подключение из вашей сети /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
- Войдите в 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
- Отредактируйте /etc/ssh/sshd_config
Port 22
Port 443
- Перезапустите sshd
sudo service sshd restart