Другой ключ pulic для хоста перехода и хоста назначения по ssh

#linux #ssh

Вопрос:

У меня есть сервер ПРЫЖКОВ (бастион) и сервер приложений. Я могу подключиться по ssh к серверу через:

 $ ssh HOP
 

Я могу подключиться по ssh к серверу приложений с сервера перехода:

 $ ssh APP
 

Оба SSH работают без пароля, только с помощью ключей ssh.

Во время развертывания ansible я обнаружил, что не могу подключиться к серверу приложений через переход. Я тестирую его над cmd:

 ssh -o ProxyCommand="ssh -W %h:%p HOP" APP
 

После этого я смогу подключиться к серверу приложений, но для этого потребуется пароль. Я обнаружил, что даже когда приложение ssh работает с HOP, теперь оно не может определить конфигурацию с сервера HOP. Поэтому я определил открытый ключ для использования в командной строке:

 ssh -o ProxyCommand="ssh -W %h:%p HOP" APP -i /etc/ssh/my_ssh_key
Warning: Identity file /etc/ssh/my_ssh_key not accessible: No such file or directory.
 

Но теперь он попытался найти my_ssh_key на локальном хосте и снова запрашивает пароль.

Как я могу принудительно использовать конфигурацию с сервера HOP или определить, чтобы использовать открытый ключ SSH с HOP, а не с локального хоста? Это вообще возможно?

Комментарии:

1. Я бы рекомендовал использовать конфигурацию «Forward agent «, если вы используете тот же ключ. это гораздо безопаснее. вы также можете использовать эту конфигурацию в Ansible. «Хост <Имя или IP-адрес сервера ПЕРЕХОДА> Агент пересылки Да»

2. Как я пишу в заголовке, существуют разные ключи. Поэтому я поставил перед агентом задачу «нет». Так что его нельзя использовать, как вы упомянули, верно? У вас есть какие-нибудь идеи, как это решить? Если бы там был тот же ключ, мне просто нужно было бы добавить ssh, а затем использовать агент пересылки да, верно?

3. ДА. вы можете добавить свои ключи в агент, выполнив команду: ssh-добавить <ваше местоположение ключа>. вы можете проверить, запустив : ssh-add-L, затем вы можете настроить конфигурацию на локальном хосте — откуда вы переходите по ssh/APP. создайте ~/.ssh/config, в случае, если файл отсутствует, затем добавьте: Хост <IP или имя перехода/ПРИЛОЖЕНИЯ> Агент пересылки да

4. Но это означает, что у меня должны быть все ssh-ключи на моем локальном хосте. Как я уже упоминал выше, у меня есть только ключ для перехода, а не от перехода к приложению.

Ответ №1:

Я достиг этого, следуя такому подходу:

Файл узла Ansible изменяется для использования узла bastion в группе узлов:

  [testservers]
 192.168.20.140
 192.168.10.88
[testservers:vars]
ansible_port = 22 # remote host port
ansible_user = ec2-user # remote user host
private_key_file = /Users/laptop-ansibleuser/.ssh/id_rsa # laptop key to login to bastion host
ansible_ssh_common_args='-o StrictHostKeyChecking=no -o ProxyCommand="ssh -o 'ForwardAgent yes' ansible-remote@<bastion host> -p 2222 'ssh-add /home/ansible-remote/.ssh/id_rsa amp;amp; nc %h %p'"'