Что такое переадресация агента SSH и как вы его используете? – CloudSavvy IT
![Переадресация агента SSH](https://www.cloudsavvyit.com/thumbcache/0/0/b1db1079e65f6b1ce29ff2b226ee3790/p/uploads/2019/04/x7e447f1a.png.pagespeed.gp+jp+jw+pj+ws+js+rj+rp+rw+ri+cp+md.ic.2Eh0lETHwe.jpg)
Переадресация агента SSH позволяет вам использовать удаленный локальный ключ SSH удаленно, не беспокоясь о том, чтобы оставлять конфиденциальные данные на сервере, с которым вы работаете. Он встроен в ssh
и прост в настройке и использовании.
Что такое агент SSH?
Ваш открытый SSH-ключ похож на ваше имя пользователя или личность, и вы можете поделиться им со всеми. Ваш личный ключ SSH похож на пароль и сохраняется локально на вашем компьютере. Но это похоже на хранение ваших паролей на заметке – любой может их просмотреть, если у них есть к нему доступ. Таким образом, для безопасности SSH попросит вас ввести ключевую фразу при генерации ключей (надеюсь, вы не пропустили этот шаг) и использует эту кодовую фразу для шифрования и дешифрования вашего закрытого ключа.
Тем не менее, это означает, что вам придется вводить парольную фразу каждый раз, когда вам нужно использовать свой закрытый ключ, что будет раздражать. Чтобы управлять этим, большинство реализаций SSH будет использовать агент, который хранит ваш расшифрованный ключ в памяти. Это означает, что вам нужно будет разблокировать его только один раз, и он будет сохраняться до перезапуска, позволяя безопасно входить на серверы без запроса пароля.
Что такое переадресация агента SSH?
Агент SSH экспедирование это как идти еще один слой глубже. Например, представьте, что вы подключаетесь к удаленному серверу и хотите git pull
некоторый код, который вы храните на Github. Вы хотите использовать SSH-аутентификацию для Github, но вам не нужны ваши личные ключи на этом удаленном сервере, только на вашем компьютере.
Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)
Чтобы решить эту проблему, вы можете открыть свой локальный агент SSH на удаленном сервере, позволяя ему действовать как вы, пока вы подключены. Это не отправляет ваши личные ключи через Интернет, даже если они зашифрованы; он просто позволяет удаленному серверу получить доступ к вашему локальному агенту SSH и подтвердить вашу личность.
Это работает так: вы просите свой удаленный сервер извлечь некоторый код из Github, а Github говорит «кто вы?» на сервер. Обычно сервер справляется со своим собственным id_rsa
файлы для ответа, но вместо этого он перенаправит вопрос на ваш локальный компьютер. Ваш локальный компьютер отвечает на вопрос и отправляет ответ (который не включает ваш закрытый ключ) на сервер, который пересылает его обратно в Github. Github не заботится о том, что ваш локальный компьютер ответил на вопрос, он просто видит, что на него ответили, и позволяет вам подключиться.
Как включить переадресацию агента SSH
На Mac и Linux переадресация агента SSH встроена в ssh
и ssh-agent
Процесс запускается автоматически. Все, что вам нужно сделать, это убедиться, что ваши ключи добавлены в ssh-agent
и настроить ssh
использовать пересылку.
Добавить ключи в ssh-agent
Вы можете использовать утилиту ssh-add
добавить ключи к вашему местному агенту. Предполагая, что ваш закрытый ключ хранится в id_rsa
, Вы можете запустить:
ssh-add ~/.ssh/id_rsa
Вы также можете вручную вставить ключ вместо того, чтобы использовать id_rsa
, Убедитесь, что ключ добавлен правильно с помощью:
ssh-add -L
Если это так, он должен выплюнуть ваш ключ.
Добавить ключи на macOS
В macOS вместо этого вам нужно будет выполнить:
ssh-add -K ~/.ssh/id_rsa
-K
flag будет хранить ключ в связке ключей MacOS, который необходим для того, чтобы он запомнил ваши ключи при перезагрузке.
Разрешить пересылку в конфигурации вашего клиента
Откройте свой ~/.ssh/config
файл на локальном компьютере или создайте новый, если он пуст. Мы установим новое правило, чтобы убедиться, что переадресация агента включена для домена этого сервера:
Host example ForwardAgent yes
Вы должны заменить example
с вашими серверами доменное имя или IP-адрес. Вы можете использовать подстановочный знак *
для хоста, но тогда вы будете перенаправлять доступ к своим закрытым ключам на каждый сервер, к которому вы подключаетесь, что, вероятно, не то, что вам нужно.
В зависимости от вашей операционной системы, вы также можете иметь конфигурационные файлы на /etc/ssh/ssh_config
для macOS или /etc/ssh_config
для Ubuntu. Эти файлы могут переопределить файл конфигурации пользователя в ~/.ssh/config
, поэтому убедитесь, что ничего не противоречит. Линии, начинающиеся с #
закомментированы, и не имеют никакого эффекта.
Вы также можете вручную включить переадресацию агента для любого домена, используя ssh -A user@host
, который будет обходить все конфигурационные файлы. Если вы хотите простой способ переадресации, не касаясь конфигурации, вы можете добавить alias ssh="ssh -A"
к вашим настройкам bash, но это то же самое, что и использование хоста с подстановочными знаками, поэтому мы не рекомендуем его ни для чего, связанного с безопасностью.
Тест SSH Forwarding
Если у вас нет двух серверов под рукой, самый простой способ проверить, работает ли переадресация SSH, – это добавить ваш открытый ключ с локального компьютера на ваш Github профиль и попробуйте SSH с удаленного сервера:
ssh git@github.com
Если это сработало, вы должны увидеть свое имя пользователя, и вы должны иметь возможность выдвигать и извлекать код из репозитория, даже не помещая закрытые ключи на сервер.
Настройка пересылки SSH для клиентов Windows
Поскольку Windows не является операционной системой Unix, настройка будет зависеть от того, насколько точно вы работаете ssh
на первом месте.
Если вы используете Подсистема Linux для Windows, который позволяет запускать bash в Windows, установка будет такой же, как в Linux или macOS, поскольку он полностью виртуализирует дистрибутив Linux для запуска командной строки.
Если вы используете Git Bash, установка такая же, как в Linux, но вам нужно будет запустить ее вручную ssh-agent
когда вы запускаете оболочку, что вы можете сделать с скрипт запуска в .bashrc
,
Если вы используете PuTTY, настройка довольно проста. В конфигурации перейдите в Connection> SSH> Auth и включите «Разрешить переадресацию агента».
Вы также можете добавить свой файл закрытого ключа из той же панели. PuTTY будет обрабатывать SSH-агент для вас, поэтому вам не придется возиться с какими-либо конфигурационными файлами.
Что делать, если переадресация SSH не работает
Убедитесь, что у вас действительно есть ключи SSH; если вы этого не сделаете, вы можете запустить ssh-keygen
, который поместит ваш закрытый ключ в ~/.ssh/id_rsa
и ваш открытый ключ в ~/.ssh/id_rsa.pub
,
Убедитесь, что ваши ключи SSH работают правильно с обычной аутентификацией, и добавьте их в ssh-agent
, Вы можете добавить ключи с ssh-add
,
ssh-agent
Процесс также должен быть запущен. В macOS и Linux он должен запуститься автоматически, но вы можете убедиться, что он работает с:
echo "$SSH_AUTH_SOCK"
Если он настроен правильно, вы должны увидеть Listeners
сокет вернулся.
Убедитесь, что ваши конфигурационные файлы настроены правильно, чтобы включить ForwardAgent yes
и убедитесь, что другие конфигурационные файлы не перезаписывают это поведение. Чтобы проверить, какие файлы конфигурации использует SSH, вы можете запустить ssh
в подробном режиме:
ssh -v git@github.com
Какой должен отображать, какие файлы конфигурации используются. Файлы, отображаемые позже в этом списке, имеют приоритет над более ранними файлами.
И, конечно, параметры командной строки переопределяют файлы конфигурации. Если переадресация агента не работает с ssh -A
, и ваши ключи правильно настроены в вашем агенте, тогда что-то еще не так, и вам нужно будет проверить соединение с серверами в цепочке.
Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)