Что такое переадресация агента SSH и как ее использовать? — CloudSavvy ИТ

Перенаправление агента SSHFuntap / ShutterstockПереадресация агента SSH позволяет вам использовать ваш частный локальный ключ SSH удаленно, не беспокоясь о сохранении конфиденциальных данных на сервере, с которым вы работаете. Он встроен в ssh, прост в настройке и использовании.

Что такое агент SSH?

Ваш публичный SSH-ключ похож на ваше имя пользователя или личность, и вы можете поделиться им со всеми. Ваш закрытый SSH-ключ похож на пароль и сохраняется локально на вашем компьютере. Но это похоже на хранение ваших паролей на стикерах — их может просматривать любой, если у них есть к ним доступ. Итак, в целях безопасности SSH запросит у вас парольную фразу при генерации ключей (надеюсь, вы не пропустили этот шаг), и он будет использовать эту парольную фразу для шифрования и дешифрования вашего закрытого ключа.

Однако это означает, что вам придется вводить кодовую фразу каждый раз, когда вам нужно использовать свой закрытый ключ, что будет раздражать. Чтобы справиться с этим, в большинстве реализаций SSH будет использоваться агент, который хранит ваш расшифрованный ключ в памяти. Это означает, что вам нужно будет разблокировать его только один раз, и он будет действовать до перезапуска, что позволяет вам безопасно входить на свои серверы без запроса парольной фразы. Конечно, вы захотите убедиться, что ваш SSH-сервер заблокирован.

Что такое пересылка агента SSH?

Агент SSH пересылка это похоже на еще один слой глубже. Например, представьте, что вы подключаетесь к удаленному серверу и хотите, чтобы git извлек код, который вы храните на Github. Вы хотите использовать SSH-аутентификацию для Github, но вам не нужны ваши закрытые ключи на этом удаленном сервере, только на вашем компьютере.

Чтобы решить эту проблему, вы можете открыть свой локальный агент 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 сохранит ключ в связке ключей macOS, что необходимо для запоминания ваших ключей при перезагрузке.
Разрешить пересылку в конфигурации вашего клиента
Откройте файл ~ / .ssh / config на локальном компьютере или создайте новый, если он пуст. Мы установим новое правило, чтобы убедиться, что переадресация агента включена для домена этого сервера:
Пример хоста ForwardAgent да
Вы должны заменить example на доменное имя или IP-адрес вашего сервера. Вы можете использовать подстановочный знак * для хоста, но тогда вы будете перенаправлять доступ к своим закрытым ключам на каждый сервер, к которому вы подключаетесь, что, вероятно, не то, что вам нужно.

В зависимости от вашей операционной системы у вас также могут быть файлы конфигурации SSH в / etc / ssh / ssh_config для macOS или / etc / ssh_config для Ubuntu. Эти файлы могут иметь приоритет над файлом конфигурации пользователя в ~ / .ssh / config, поэтому убедитесь, что ничего не конфликтует. Строки, начинающиеся с символа #, закомментированы и не действуют.

Вы также можете вручную включить переадресацию агента для любого домена, используя ssh -A user @ host, что позволит обойти все файлы конфигурации. Если вам нужен простой метод пересылки, не касаясь конфигурации, вы можете добавить псевдоним ssh = «ssh -A» в свои настройки bash, но это то же самое, что и использование хоста с подстановочными знаками, поэтому мы не рекомендуем его для какой-либо безопасности — сосредоточен.
Тестирование пересылки SSH
Если у вас нет двух серверов под рукой, самый простой способ проверить, работает ли пересылка 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, настройка довольно проста. В конфигурации выберите «Соединение»> «SSH»> «Проверка подлинности» и включите «Разрешить пересылку агента».

Вы также можете добавить свой файл закрытого ключа из той же панели. PuTTY будет обрабатывать SSH-агент за вас, поэтому вам не придется возиться с какими-либо файлами конфигурации.

Что делать, если пересылка SSH не работает

Убедитесь, что у вас действительно есть ключи SSH; если вы этого не сделаете, вы можете запустить ssh-keygen, который поместит ваш закрытый ключ в ~ / .ssh / id_rsa, а ваш открытый ключ — в ~ / .ssh / id_rsa.pub.

Убедитесь, что ваши SSH-ключи работают правильно с обычной аутентификацией, и добавьте их в ssh-agent. Вы можете добавить ключи с помощью ssh-add.

Также должен быть запущен процесс ssh-agent. В macOS и Linux он должен запускаться автоматически, но вы можете убедиться, что он работает, с помощью:
эхо «$ SSH_AUTH_SOCK»

Если он настроен правильно, вы должны увидеть возвращенный сокет Listeners.

Убедитесь, что ваши файлы конфигурации настроены правильно, чтобы включить ForwardAgent yes, и убедитесь, что другие файлы конфигурации не перезаписывают это поведение. Чтобы проверить, какие файлы конфигурации использует SSH, вы можете запустить ssh в подробном режиме:
ssh -v git@github.com
Что должно отображать, какие файлы конфигурации используются. Файлы, отображаемые позже в этом списке, имеют приоритет над более ранними файлами.

И, конечно же, параметры командной строки переопределяют файлы конфигурации. Если переадресация агента не работает с ssh -A, и ваши ключи правильно настроены в вашем агенте, значит, что-то еще не так, и вам нужно проверить свое соединение с серверами в цепочке.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *