Представьте ситуацию, что вы подключаетесь к удалённым ресурсам, например к git, с помощью SSH-ключа. У вас на локальном компьютере есть сохранённый приватный SSH-ключ. Представьте также, что вы подключаетесь к какому-нибудь SSH-серверу с помощью с помощью другого SSH-ключа или через пару логин-пароль. И вам понадобилось на этом удалённом SSH-сервере выкачать проект с git. Сервер публичный. Закидывать туда файл со своим приватным ключом нельзя, но ключ нужен для авторизации на git.
Для решения проблемы, описанной абзацем выше, существует ssh-agent. Обычно он настроен так, что запускается автоматически, в противном же случае его нужно запустить вручную:
1 |
ssh-agent |
Затем добавьте туда ваш приватный SSH-ключ:
1 |
ssh-add ~/.ssh/id_rsa |
Теперь когда мы подключаемся к удалённому SSH-серверу нужно указать ключ -A:
1 |
ssh -A user@server_domain |
Ключ -A будет пробрасывать наш SSH-ключ, поэтому при выполнении команд git clone на SSH-сервере мы сможем авторизоваться в репозиториях с помощью нашего приватного ключа, при этом мы НЕ храним сам ключ на этом SSH-сервере.
Чтобы не приходилось добавлять свой приватный ключ в ssh-agent в каждой вкладке терминала отдельно, можно использовать специальную обёртку sshag:
1 |
wget https://raw.githubusercontent.com/intuited/sshag/master/sshag.sh -O ~/.sshagrc |
Плюс добавить в свой “~/.bashrc” строки:
1 2 |
# ssh-agent wrapper if [ -f ${HOME}/.sshagrc ]; then source ${HOME}/.sshagrc; sshag_init >/dev/null 2>&1; fi |
Вот и всё, хватит магии на сегодня.