Запуск агента SSH при запуске Git Bash в Windows
Я использую git bash. Я должен использовать
eval `ssh-agent.exe`
ssh-add /my/ssh/location/
каждый раз, когда я запускаю новый git bash.
Есть ли способ установить ssh-агент навсегда? Или окна имеют хороший способ
для управления ключами ssh?
Я новый парень, пожалуйста, дайте мне подробный учебник, спасибо!
Ответы
Ответ 1
В сеансе git bash вы можете добавить скрипт в ~/.profile
или ~/.bashrc
(с ~
обычно устанавливаемым на %USERPROFILE%
), чтобы этот сеанс автоматически запускал ssh-agent
. Если файл не существует, просто создайте его.
Это то, что описывает GitHub в разделе " Работа с ключевыми фразами SSH ".
В разделе " Автозапуск ssh-agent on Git for 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, которая является более надежной и актуальной.
Ответ 2
P.S: Эти инструкции находятся в контексте оболочки Bash, открытой в подсистеме Windows 10 Linux, и не упоминает о сим-связывании 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 с помощью команды $ 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 и он должен работать без каких-либо дополнительных шагов.
Примечание:
Спасибо.
Ответ 3
Я нашел самый гладкий способ достичь этого - использовать Pageant как агент SSH и plink.
Вам нужно настроить сеанс шпатлевки для имени хоста, которое используется на вашем пульте дистанционного управления.
Вам также понадобится plink.exe, который можно загрузить с того же сайта, что и putty.
И вам нужно, чтобы страница выполнялась с загруженным ключом. У меня есть ярлык для показа в моей загрузочной папке, загружающей мой SSH-ключ при входе в систему.
Когда вы устанавливаете git -scm, вы можете указать его для использования черепахи /plink, а не OpenSSH.
Чистый эффект заключается в том, что вы можете открыть git - bash, когда захотите, и нажать/вытащить, не подвергая сомнению кодовые фразы.
То же самое относится к сеансам шпатлевки и WinSCP, когда во время загрузки вашего сайта загружен ваш ключ. Это делает жизнь намного проще (и безопасна).
Ответ 4
Как мне не нравится использовать putty в Windows в качестве обходного пути, я создал очень простую утилиту ssh-agent-wrapper. Он сканирует ваши .ssh папки и добавляет все ваши ключи к агенту. Вам просто нужно поместить его в папку автозагрузки Windows, чтобы он работал.
Предположения
- ssh-agent в пути
- shh-add in path (как при выборе опции "RED" при установке git
- личные ключи находятся в папке% USERPROFILE%/. ssh
- имена закрытых ключей начинаются с id (например, id_rsa)
Ответ 5
Создайте новый . bashrc файл в ~ каталоге.
Там вы можете поместить свои команды, которые вы хотите исполнять, каждый раз, когда вы запускаете bash
Ответ 6
Простое двухстрочное решение из этого ответа:
Для sh, bash и т.д.:
# ~/.profile
if ! pgrep -q -U `whoami` -x 'ssh-agent'; then ssh-agent -s > ~/.ssh-agent.sh; fi
. ~/.ssh-agent.sh
Для csh, tcsh и т.д.:
# ~/.schrc
sh -c 'if ! pgrep -q -U `whoami` -x 'ssh-agent'; then ssh-agent -c > ~/.ssh-agent.tcsh; fi'
eval `cat ~/.ssh-agent.tcsh`