Развертывание частного экземпляра EC2 (скажем, Ec2.pem) и хоста Bastion (скажем, BastionKey.pem) с разными ключами SSH - AWS VPC - PullRequest
0 голосов
/ 27 апреля 2019

Я понимаю, что не рекомендуется задавать несколько вопросов в одном сообщении, но все они тесно связаны, поэтому задаю их в одном сообщении.

Я пытался подключиться к SSH к частному экземпляру EC2 в VPC.из интернета с помощью хоста Bastion.Я сталкивался с 2 подходами. ПРИМЕЧАНИЕ Когда я запустил свой частный экземпляр EC2 и хост Bastion, я выбрал разные ключи (в обоих подходах, которые я видел, авторы использовали одни и те же ключи для EC2 и Bastion)

Подход1 : Настройка SSH ProxyCommand, как показано в https://www.youtube.com/watch?v=EpFAHis4O4g

Подход 2: Команда ssh-agent с опцией ssh ​​-A https://aws.amazon.com/blogs/security/securely-connect-to-linux-instances-running-in-a-private-amazon-vpc/

Вопрос 1: В подходе 2 я сделал

ssh-add ~/Downloads/Ec2.pem
ssh-add ~/Downloads/BastionKey.pem

Правильно ли мой подход добавления обоих ключей в ssh-agent?Таким образом, я смог использовать ssh в Bastion в качестве первого шага, а затем в качестве второго шага мне пришлось явным образом использовать ssh в приватном EC2.

Вопрос 2: Подход 1 противоречит идее (Подход 2) двухшагового процесса ssh, но предлагает ProxyCommand, чтобы конечный пользователь мог иметь возможность напрямую подключаться по ssh к частному EC2 в одномшаг.Таким образом, системный администратор хоста Bastion не сможет контролировать ssh-шинг для отдельных экземпляров EC2. Фактически автор демонстрирует, что если вы перейдете по ssh к хосту Bastion (это будет успешно выполнено), а затем по ssh в EC2 это не удастся.Правильно ли мое понимание здесь?

Вопрос 3: Подход 1 не работает для меня.Я использовал ту же структуру для ~ / .ssh / config, но с разными путями файлов ключей.Я не могу напрямую подключиться к своему личному EC2.Я даже попробовал двухэтапный процесс, но я могу только войти в хост Bastion, я не могу ssh к EC2.Все мои группы безопасности, ACL, интернет-шлюз, NAT-шлюз и настройки VPC в порядке, иначе подход 2 не сработал бы.Что я могу делать не так?

cat ~/.ssh/config 
HOST bastion
Hostname ec2-5x-xx-xx-xx.compute-1.amazonaws.com
User ec2-user
IdentityFile /Users/myname/Downloads/BastionKey.pem

HOST *.ec2.internal
User ec2-user
IdentityFile /Users/myname/Downloads/Ec2.pem
ProxyCommand ssh -q -W %h:%p bastion

Вопрос 4: Какой рекомендуемый подход среди 1 и 2 и какие дополнительные шаги необходимо выполнить, когда выбраны разные ключи для Bastion и EC2?

Ошибка вывода:

ssh -v ip-10-0-1-12.ec2.internal
OpenSSH_7.8p1, LibreSSL 2.6.2
debug1: Reading configuration data /Users/myname/.ssh/config
debug1: /Users/myname/.ssh/config line 6: Applying options for *.ec2.internal
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 48: Applying options for *
debug1: Executing proxy command: exec ssh -q -W ip-10-0-1-12.ec2.internal:22 bastion
debug1: identity file /Users/myname/Downloads/Ec2.pem type -1
debug1: identity file /Users/myname/Downloads/Ec2.pem-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_7.8
/bin/false: No such file or directory
ssh_exchange_identification: Connection closed by remote host

1 Ответ

1 голос
/ 27 апреля 2019
HOST bastion
Hostname ec2-example-ip.compute-1.amazonaws.com
User ec2-user
IdentityFile /Users/myname/Downloads/BastionKey.pem

HOST *.ec2.internal
User ec2-user
IdentityFile /Users/myname/Downloads/Ec2/Ec2.pem
ProxyCommand ssh -q -W %h:%p bastion

Попробуйте использовать общедоступное DNS-имя бастионов в конфигурации ssh, а также использовать внутреннее DNS-имя ec2 для того, которое стоит за VPC. (DNS AWS в лучшем случае поверхностен)

Примечание: * .ec2.internal предполагает, что вы будете использовать один и тот же ключ ssh для каждого ec2, который вам нужен для доступа к прокси через ваш бастион. Если это не так, замените * .ec2.internal на what-internal-ip.ec2.internal и добавьте запись для каждого отдельного ec2.

Надеюсь, это решит вашу проблему.

...