У меня есть закрытый 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?
Я использовал два разных подхода в сценариях, подобных вашему.
Или
Если сервер настроен таким образом, чтобы ваш ключ никогда не выходил из сервера, ни один из вышеперечисленных подходов не будет работать. В этом случае нет решения, которое было бы проще, чем ваш собственный подход. Но есть альтернативы, которые могут обеспечить лучший пользовательский опыт и / или безопасность.
Эта команда откроет ту же пару соединений 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, например ответ касперда. Этот ответ предоставляется как прямой ответ на вопрос для полноты, и не обязательно как лучшее решение.