Как к SSH к ec2 экземпляру в VPC частная подсеть через сервер NAT

Я создал VPC в aws с общедоступной подсетью и частной подсетью. Частная подсеть не имеет прямого доступа к внешней сети. Так, существует сервер NAT в общедоступной подсети, которые передают весь исходящий трафик от частной подсети до внешней сети.

В настоящее время я могу SSH от общедоступной подсети до частной подсети, также SSH от NAT до частной подсети. Однако то, что я хочу, является SSH от любой машины (домашний ноутбук, офисная машина и мобильный телефон) к экземплярам в частной подсети.

Я провел некоторое исследование, что я могу установить поле NAT для передачи SSH экземпляру в частной подсети. Но я получил не удачу для этого.

Может любой перечислять то, что я должен установить для создания этого возможным.

Именование:

ноутбук (любое устройство вне VPC)

туземный (сервер NAT в общедоступной подсети)

место назначения (сервер в частной подсети, которую я хочу подключить с),

Не верное следующее ограничения или нет:

У "места назначения" нет общедоступного IP, только IP подсети, например, 10.0.0.1, "место назначения" не может соединиться с "туземным" через общественность nat. Существует несколько "целевых" серверов, я должен установить один для каждого?

Спасибо

15
задан 12 November 2014 в 01:19
3 ответа

Вы можете настроить бастионный хост для подключения к любому экземпляру внутри вашего VPC:

http://blogs.aws.amazon.com/security/post/Tx3N8GFK85UN1G6/Securely-connect-to-Linux-instances-running-in-a-private-Amazon-VPC

Вы можете выбрать запуск нового экземпляра, который будет функционировать как бастионный хост, или использовать существующий NAT экземпляр в качестве бастиона.

Если вы создадите новый экземпляр, то вы это сделаете:

1) создадите группу безопасности для вашего бастионного хоста, которая будет разрешать доступ по SSH с вашего ноутбука (обратите внимание на эту группу безопасности для шага 4)

2) запустите отдельный экземпляр (бастион) в публичной подсети в вашем VPC

3), присвоив этому бастионному хосту публичный IP либо при запуске, либо назначив ему эластичный IP

4), обновите группы безопасности каждого из ваших экземпляров, которые не имеют публичного IP, чтобы разрешить доступ по SSH с бастионного хоста. Это можно сделать, используя ID группы безопасности бастионного узла (sg-#####).

5) используйте переадресацию SSH агентов (ssh -A user@publicIPofBastion) для подключения сначала к бастиону, а затем один раз в бастионном узле,SSH к любому внутреннему экземпляру (ssh user@private-IP-of-Internal-Instance). Переадресация агента позаботится о переадресации вашего приватного ключа, чтобы он не хранился на бастионном экземпляре (никогда не хранить приватные ключи ни на одном экземпляре!!)

Пост блога AWS, приведенный выше, должен быть в состоянии предоставить некоторую щепетильность в отношении процесса. Я также включил ниже, если вам нужны дополнительные подробности о бастионных хостах:

Concept of Bastion Hosts: http://en.m.wikipedia.org/wiki/Bastion_host

Если вам нужны разъяснения, не стесняйтесь комментировать.

24
ответ дан 2 December 2019 в 20:49

Просто для пояснения: как только вы подключитесь по 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.

0
ответ дан 2 December 2019 в 20:49

La única forma en que podría hacerlo funcionar.

1) Asegúrese de que el grupo de seguridad para esta instancia privada tenga en la regla de entrada el grupo de seguridad de la subred pública

Puertos Fuente de protocolo
Todos Todos sg-0b6616e070b9ea2d (grupo de seguridad pública)

2) Con los comandos de proxy, configure su archivo de configuración ssh para tener algo como esto

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

Ejecute ssh privatehost debería funcionar

1
ответ дан 2 December 2019 в 20:49

Теги

Похожие вопросы