Команда
eval $(ssh-agent)
запускает процесс агента SSH (эквивалентный Pageant) и создает, как правило, две переменные среды: SSH_AUTH_SOCK и SSH_AGENT_PID (по крайней мере, в Linux, не знаю, имеет ли какое-то значение Windows git-bash; вероятно, нет).
Если переменная SSH_AUTH_SOCK установлена и указывает на действительный сокет агента аутентификации, любой процесс, который может прочитать переменную, может использовать ее. Так что вам просто нужен способ, чтобы значение этой переменной распространялось от одного сеанса git-bash к другому. Переменная SSH_AGENT_PID - это просто удобство, позволяющее легко убивать агента, если / когда это необходимо.
Если вы можете сохранить эти переменные окружения (или даже просто SSH_AUTH_SOCK) в файле, чтобы ваши последующие окна git-bash могли его прочитать, вы можете написать их так:
Всякий раз, когда запускается новый git-bash (т. .bashrc
Е. Со сценарием или его эквивалентом git-bash)
- проверить наличие файла переменной среды агента SSH
- если файл существует:
- прочитай это
- если сокет агента (и, возможно, процесс), указанный в файле, все еще существует, используйте переменные как есть в текущем сеансе
- иначе (то есть, если файл не был там или его информация устарела):
- бежать
eval $(ssh-agent)
- создать новый файл переменной среды агента SSH
- бежать
- сделанный!
Кроме того, вам может потребоваться ввести URL-адрес SSH git в полной форме, то есть вместо простого git@server.name/project.git
введите его следующим образом:
ssh://git@server.name/project.git
Технически форма без ssh://
префикса - это просто сокращение, которое удобнее набирать в командной строке.