Запуск агента SSH при запуске Git Bash в Windows

Я использую Git bash. Я должен использовать

eval `ssh-agent.exe`
ssh-add /my/ssh/location/

каждый раз, когда я начинаю новый Git bash.

есть ли способ установить SSH-агент навсегда? Или windows имеет хороший способ управлять ssh ключами?

Я новый парень, пожалуйста, дайте мне подробный учебник, спасибо!

6 ответов


в сеансе Git bash вы можете добавить скрипт в ~/.profile или ~/.bashrc (С ~ обычно устанавливается в %USERPROFILE%), для того, чтобы упомянутая сессия автоматически запускалась ssh-agent. Если файл не существует, просто создайте его.

это то, что GitHub описывает в "работа с паролями ключей SSH".

в "автоматический запуск ssh-агента на Git для Windows" раздел этой статьи имеет надежный скрипт, который проверяет, агент работает или нет. Ниже приведен только фрагмент, см. статью GitHub для полного решения.

# This is just a snippet. See the article above.
if ! agent_is_running; then
    agent_start
    ssh-add
elif ! agent_has_keys; then
    ssh-add
fi

Другие Ресурсы:

"получение ssh-агента для работы с git run из командной оболочки windows " имеет аналогичный сценарий, но я бы сослался на статью GitHub выше в первую очередь, которая является более надежной и актуальной.


P. S: эти инструкции находятся в контексте оболочки Bash, открытой в подсистеме Windows 10 Linux, и не упоминают о sym-связывании SSH-ключей, генерируемых в Windows с Bash на Ubuntu в Windows

1) обновите .bashrc и, добавив следующее в нем

# Set up ssh-agent
SSH_ENV="$HOME/.ssh/environment"

function start_agent {
    echo "Initializing new SSH agent..."
    touch $SSH_ENV
    chmod 600 "${SSH_ENV}"
    /usr/bin/ssh-agent | sed 's/^echo/#echo/' >> "${SSH_ENV}"
    . "${SSH_ENV}" > /dev/null
    /usr/bin/ssh-add
}

# Source SSH settings, if applicable
if [ -f "${SSH_ENV}" ]; then
    . "${SSH_ENV}" > /dev/null
    kill -0 $SSH_AGENT_PID 2>/dev/null || {
        start_agent
    }
else
    start_agent
fi

2) затем запустить $ source ~/.bashrc для перезагрузки конфигурации.

вышеуказанные шаги были предприняты от https://github.com/abergs/ubuntuonwindows#2-start-an-bash-ssh-agent-on-launch

3) создайте файл конфигурации SSH, если его нет. Используйте следующую команду для создания новой:.ssh$ touch config

4) добавить следующее ~/.ssh/config

Host github.com-<YOUR_GITHUB_USERNAME> 
HostName github.com
User git
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_work_gmail # path to your private key
AddKeysToAgent yes


Host csexperimental.abc.com
IdentityFile ~/.ssh/id_work_gmail # path to your private key
AddKeysToAgent yes

<More hosts and github configs can be added in similar manner mentioned above>

5) Добавьте свой ключ в SSH agent с помощью команды $ ssh-add ~/.ssh/id_work_gmail и тогда вы сможете подключиться к своей учетной записи github или удаленному хосту с помощью ssh. Например, в контексте вышеуказанного кода примеры:

$ ssh github.com-<YOUR_GITHUB_USERNAME>

или

$ ssh <USER>@csexperimental.abc.com

это добавление ключа к агенту SSH должно выполняться только один раз.

6) Теперь выйдите из сеанса Bash на подсистеме Windows Linux, т. е. снова выйдите из всех консолей Bash и снова запустите новую консоль и попробуйте SSH на свой хост Github или другой хост, настроенный в файле конфигурации SSH, и он должен работать без необходимости каких-либо дополнительных лестница.

Примечание:

спасибо.


Я нашел самый гладкий способ добиться этого, используя Pageant в качестве агента SSH и plink.

вы должны иметь сеанс шпатлевки, настроенный для имени хоста,который используется в вашем удаленном.

Вам также понадобится plink.exe, который можно загрузить с того же сайта, что и putty.

и Вам нужен конкурс с загруженным ключом. У меня есть ярлык для pageant в моей папке автозагрузки, который загружает мой SSH-ключ при входе в систему.

при установке git-scm вы можете указать его для использования tortoise / plink, а не OpenSSH.

чистый эффект заключается в том, что вы можете открыть git-bash, когда захотите, и нажать/потянуть, не бросая вызов парольным фразам.

то же самое относится к сеансам putty и WinSCP, когда pageant имеет загруженный ключ. Это делает жизнь намного проще (и безопаснее).


поскольку мне не нравится использовать шпатлевку в Windows в качестве обходного пути, я создал очень простую утилиту ssh-agent-wrapper. Он сканирует ваш .ssh папки и добавляет все ваши ключи к агенту. Вам просто нужно поместить его в папку запуска Windows, чтобы он работал.

предположения:

  • ssh-агент в пути
  • shh-добавить в путь (оба, выбрав опцию" красный " при установке git
  • закрытые ключи в %USERPROFILE%/.ssh папка
  • имена закрытых ключей начинаются с id (например, id_rsa)

создать новый .bashrc и в каталоге~.

там вы можете поместить свои команды, которые вы хотите выполнить каждый раз, когда вы начинаете bash


простые две строки решением С ответ:

на ш, Баш, etc:

# ~/.profile
if ! pgrep -q -U `whoami` -x 'ssh-agent'; then ssh-agent -s > ~/.ssh-agent.sh; fi
. ~/.ssh-agent.sh

на csh, tcsh, etc:

# ~/.schrc
sh -c 'if ! pgrep -q -U `whoami` -x 'ssh-agent'; then ssh-agent -c > ~/.ssh-agent.tcsh; fi'
eval `cat ~/.ssh-agent.tcsh`