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



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



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


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



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



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

890   6  

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 запуск из командной оболочки windows " имеет аналогичный скрипт, но я бы сослался на статью GitHub выше в первую очередь, которая является более надежной и актуальной.

P. S: эти инструкции находятся в контексте оболочки Bash, открытой в подсистеме Windows 10 Linux, и не упоминают о ключах SSH sym-linking, созданных в 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 с помощью команды $ 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, и он должен работать без необходимости каких-либо дополнительных лестница.

Примечание:

  • если вы сталкиваетесь с Bad owner or permissions on ~/.ssh/config затем обновите разрешения с помощью команды chmod 600 ~/.ssh/config. Ссылка: https://serverfault.com/a/253314/98910

  • для выполнения вышеуказанных шагов вам понадобится OpenSSH v 7.2 и новее. Если вы постарше, вы можете обновить его, используя шаги, упомянутые в https://stackoverflow.com/a/41555393/936494

  • те же детали можно найти в gist Windows 10 Linux Subsystem SSH-agent issues

спасибо.

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

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

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

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

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

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

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

поскольку мне не нравится использовать putty в 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`

Comments

    Ничего не найдено.