Я создал VPC в aws с публичной подсетью и частной подсетью. Частная подсеть не имеет прямого доступа к внешней сети. Итак, в публичной подсети есть NAT-сервер, который перенаправляет весь исходящий трафик из частной подсети во внешнюю сеть.
В настоящее время я могу использовать SSH из общедоступной подсети в частную подсеть, а также по SSH из NAT в частную подсеть. Однако мне нужен SSH с любого компьютера (домашнего ноутбука, офисного компьютера и мобильного устройства) на экземпляры в частной подсети.
Я провел некоторое исследование, чтобы настроить блок NAT для пересылки SSH экземпляру в частной подсети. Но мне это не повезло.
Может ли кто-нибудь перечислить, что мне нужно настроить, чтобы это стало возможным.
Именование бывают:
ноутбук (любое устройство за пределами VPC)
nat (NAT-сервер в публичной подсети)
пункт назначения (сервер в частной подсети, к которому я хочу подключиться)
Не уверен, что следующие ограничения являются или нет:
«Пункт назначения» не имеет общедоступного IP-адреса, только IP-адрес подсети, например 10.0.0.1 «Пункт назначения» не может подключиться к «нат» через общедоступный адрес «нат». Есть несколько "целевых" серверов, нужно ли мне настраивать по одному для каждого?
Спасибо
Вы можете настроить хост-бастион для подключения к любому экземпляру в вашем VPC:
Вы можете запустить новый экземпляр, который будет функционировать как хост-бастион, или использовать существующий экземпляр NAT в качестве бастиона.
Если вы создадите новый экземпляр в качестве обзора, вы:
1) создайте группу безопасности для вашего хоста-бастиона, которая разрешит доступ по SSH с вашего ноутбука (обратите внимание на эту группу безопасности для шага 4)
2) запустить отдельный экземпляр (бастион) в публичной подсети в вашем VPC
3) дайте этому хосту-бастиону общедоступный IP-адрес либо при запуске, либо путем назначения эластичного IP-адреса.
4) обновите группы безопасности каждого из ваших экземпляров, у которых нет общедоступного IP-адреса, чтобы разрешить SSH-доступ с хоста-бастиона. Это можно сделать с помощью идентификатора группы безопасности хоста-бастиона (sg - #####).
5) используйте пересылку агента SSH (ssh -A user @ publicIPofBastion), чтобы подключиться сначала к бастиону, а затем, однажды в бастионе, SSH к любому внутреннему экземпляру (ssh user @ private-IP-of-Internal-Instance). Пересылка агента заботится о пересылке вашего закрытого ключа, поэтому его не нужно хранить в экземпляре бастиона (никогда не храните закрытые ключи ни на одном экземпляре !!)
Сообщение в блоге AWS, приведенное выше, должно содержать некоторые подробности этого процесса. Я также добавил следующее, если вам нужны дополнительные сведения о хозяевах бастиона:
Концепция бастионных войск: http://en.m.wikipedia.org/wiki/Bastion_host
Если вам нужны разъяснения, не стесняйтесь комментировать.
Единственный способ заставить его работать.
1) Убедитесь, что группа безопасности для этого частного экземпляра имеет во входящем правиле группу безопасности из общедоступной подсети.
Источник протокола портов
Все Все sg-0b6616e070b9ea2d (группа общественной безопасности)
2) Используя команды прокси, настройте файл конфигурации ssh, чтобы он имел что-то вроде этого
vim ~/.ssh/config
Host publichost
HostName 24.123.34.45
User ubuntu
IdentityFile ~/mypem.pem
ProxyCommand none
Host privatehost
HostName 10.0.2.133
User ubuntu
IdentityFile ~/mypem.pem
ProxyCommand ssh publichost -W %h:%p
Бегать ssh privatehost
он должен работать
Просто чтобы уточнить: как только вы подключитесь к хосту-бастиону по ssh, вам нужно будет подключиться по ssh к хосту NAT как пользователь. ec2-user
. Это меня немного обмануло, поскольку обычно пользователь ubuntu на AWS - это ubuntu. Так я и сделал:
laptop> ssh -A ubuntu@ssh_bastion
ssh_bastion> ssh ec2-user@nat_private_dns_or_private_ip
Также помните, что ваш ssh_bastion должен иметь исходящее правило, разрешающее трафик на другие хосты и SG.