Назад | Перейти на главную страницу

Обратное перенаправление ssh-agent. Использование удаленного ключа ssh

У меня есть закрытый ssh-ключ github.com в ssh-agent на ключевом сервере. Я хочу запустить со своего домашнего компьютера за NAT git pull и используйте мой ssh-ключ github.

Единственный известный мне способ сделать это - использовать ssh на сервере ключей и перенаправить порт 22, затем ssh обратно на мой домашний компьютер при перенаправлении агента, а затем запустить git pull в этой новой оболочке вот так:

home$ ssh keyserver -R10022:localhost:22
keyserver$ ssh -A localhost -p10022
home$ git pull

Есть ли более простой способ использовать удаленный ключ ssh?

Я использовал два разных подхода в сценариях, подобных вашему.

  1. Запустить агента локально
  2. Перенаправить на сервер
  3. Используйте ssh-add, чтобы добавить ключ с сервера к вашему локальному агенту (опционально с ограниченным временем жизни)
  4. Выйти с сервера
  5. Используйте ключ от местного агента столько раз, сколько хотите

Или

  1. Запустить агента локально
  2. ключевой файл cat сервера ssh | ssh-add / dev / stdin

Если сервер настроен таким образом, чтобы ваш ключ никогда не выходил из сервера, ни один из вышеперечисленных подходов не будет работать. В этом случае нет решения, которое было бы проще, чем ваш собственный подход. Но есть альтернативы, которые могут обеспечить лучший пользовательский опыт и / или безопасность.

Эта команда откроет ту же пару соединений ssh, которую вы использовали в своем собственном примере. Но затем вернитесь к начальной оболочке, где вы можете использовать перенаправленный агент.

export $(grep -m1 ^SSH_AUTH_SOCK= <(
ssh -n -R10022:localhost:22 keyserver ssh -A localhost -p10022 "'env ; sleep 99999'"))

Начиная с OpenSSH 6.7 (2014-10-06), есть возможность достичь цели обратного перенаправления ssh-agent. Особенностью является переадресация сокетов домена Unix.

Пример:

export SSH_AUTH_SOCK=~/.ssh/ssh-agent.sock
ssh -NfL $SSH_AUTH_SOCK:/remote/path/to/ssh-agent.sock keyserver

Это перенаправит локальный сокет на сокет ssh-agent удаленного сервера ключей через ssh и fork в фоновом режиме.

Примечание. К этому методу относятся все те же предупреждения безопасности, что и для обычной переадресации агента, найденные на странице руководства для ssh (1).
Кроме того, могут быть лучшие решения вашей проблемы, чем обратная пересылка ssh-agent, например ответ касперда. Этот ответ предоставляется как прямой ответ на вопрос для полноты, и не обязательно как лучшее решение.