Запуск агента 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, и он должен работать без необходимости каких-либо дополнительных лестница.
Примечание:
если вы сталкиваетесь с
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 подсистема 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`