Как запустить ssh-add на windows?
Я слежу за #335 Развертывание на VPS, и ближе к концу эпизода, мы должны запустить ssh-add
дать серверу доступ к github repo.
Проблема в том, как мне запустить его в Windows? Что нужно для установки?
Я знаю что бегать ssh
для доступа к удаленному серверу я могу использовать Putty
, Но эта команда должна выполняться локально, я знаю, как использовать Putty
сделать это.
16 ответов
Можно установить Git для Windows, а затем запустить ssh-add
:
Шаг 3: Добавьте ваш ключ в ssh-agent
Чтобы настроить программу ssh-agent для использования вашего ключа SSH:
Если у вас установлен GitHub для Windows, вы можете использовать его для клонирования репозиториев, а не для работы с SSH-ключами. Он также поставляется с инструментом Git Bash, который является предпочтительным способом запуска команд git в Windows.
Убедитесь, что ssh-agent включен:
Если вы используете Git Bash, включите ssh-agent:
# start the ssh-agent in the background ssh-agent -s # Agent pid 59566
Если вы используете другую терминальную подсказку, такую как msysgit, включите ssh-agent:
# start the ssh-agent in the background eval $(ssh-agent -s) # Agent pid 59566
Добавьте ваш SSH-ключ в ssh-agent:
ssh-add ~/.ssh/id_rsa
Убедитесь, что у вас установлен Git и есть Git cmd
папка в вашем пути. Например, на моем компьютере путь к папке git cmd C:\Program Files\Git\cmd
Убедитесь, что ваш id_rsa
файл находится в папке c:\users\yourusername\.ssh
Перезапустите командную строку, если вы этого еще не сделали, а затем запустите start-ssh-agent
, Он найдет ваш id_rsa
и подскажет вам пароль
Редактировать: похоже start-ssh-agent
не работает правильно, если вы используете PowerShell. Если вы используете PowerShell и Git, вы можете установить Posh-Git. Он поставляется с командлетом Start-SSHAgent
который достигает того же результата, что и start-ssh-agent
,
Ответ 2021 года
В последние годы Microsoft улучшила поддержку ssh-ключей. Теперь есть полнофункциональная «служба» для запуска.
С https://docs.microsoft.com/en-us/windows-server/administration/openssh/openssh_keymanagement
В (Admin) Powershell:
# By default the ssh-agent service is disabled.
Get-Service -Name ssh-agent | Set-Service -StartupType Automatic
Start-Service ssh-agent
Затем из любой пользовательской оболочки:
ssh-add path/to/.ssh/id_rsa
Если вы не используете GitBash - вам нужно запустить свой ssh-агент с помощью этой команды
start-ssh-agent.cmd
Это жестоко закопано в комментариях, и его трудно найти. Это должен быть принятый ответ.
Если ваш агент ssh не настроен, вы можете открыть PowerShell от имени администратора и установить его в ручной режим.
Get-Service -Name ssh-agent | Set-Service -StartupType Manual
Если вы пытаетесь настроить ключ для использования git с ssh, всегда есть возможность добавить конфигурацию для файла идентификации.
vi ~/.ssh/config
Host example.com
IdentityFile ~/.ssh/example_key
Я был в подобной ситуации раньше. В командной строке вы набираете start-ssh-agent и вуаля! Будет запущен ssh-agent. Введите кодовую фразу, если вас попросят.
Для того, чтобы бежать ssh-add
под Windows можно установить git используя choco install git
, ssh-add
команда распознается один раз C:\Program Files\Git\usr\bin
был добавлен как переменная PATH, и командная строка была перезапущена:
C:\Users\user\Desktop\repository>ssh-add .ssh/id_rsa
Enter passphrase for .ssh/id_rsa:
Identity added: .ssh/id_rsa (.ssh/id_rsa)
C:\Users\user\Desktop\repository>
Чтобы сгенерировать, проверить и добавить ключи ssh в Windows с помощью PowerShell:
Откройте PowerShell с помощью Win + X, затем нажмите «Терминал (администратор)».
Для генерации ключа используйте:
ssh-keygen -t rsa -b 4096 -C « email@email.com »
-t указывает тип шифрования, -b — степень шифрования, а -C — это адрес электронной почты, прикрепленный к учетной записи, к которой вы хотите иметь доступ с помощью своего ключа.
По умолчанию он должен храниться в C:\Users\yourusername/.ssh/id_rsa, и вы должны найти там файл yourkey и файл yourkey.pub.
Чтобы отобразить ваш открытый ключ из терминала, сделайте следующее:
cat yourkey.pub
Чтобы проверить, работает ли агент SSH, выполните:
Get-Service ssh-agent
Если он не запущен, сделайте это, чтобы настроить его вручную:
Get-Service ssh-agent | Set-Service -StartupType Manual
Затем:
Start-Service ssh-agent
Чтобы проверить ключи, уже добавленные в ваш ssh-агент, сделайте следующее:
ssh-add -L
И чтобы добавить свой ключ, сделайте следующее:
ssh-add yourkey
ssh-add - это команда для добавления ключа к локальному агенту. У Putty есть собственная агентская программа под названием Pageant, которая выполняет ту же функцию.
eval "$(ssh-agent -s)"
ssh-add C:/Users/Dell/.ssh/gitlab (your path)
git clone repo_link
Приведенное ниже решение решило мою проблему. Обязательно запустите PowerShell в режиме администратора и выполните следующую операцию:
Проверьте текущий статус ssh-agent: "Get-Service | select -property name, starttype" -> должно быть отключено
Установите новый тип: «Set-Service -Name ssh-agent -StartupType Manual»
Запустите его: "Start-Service ssh-agent"
Добавьте просто свой ключ, как и раньше: "ssh-add" (например, ssh-add keyfile)
Я нашел решение здесь :
В графическом интерфейсе Git для Windows есть оконное приложение, которое позволяет вставлять в местоположения ключи ssh, URL-адрес хранилища и т. Д.
Это работает с простым cmd на win7 и win10 и cygwin ssh / git / github:
c:\> type ssh-agent-start-cmd.cmd
@echo off
@ by github/moshahmed
if "%1" == "" (
echo "Usage: ssh-agent-cmd keyfile .. starts ssh-agent and load ~/.ssh/*keyfile*"
goto :eof
)
taskkill /f /im ssh-agent.exe
:: pskill ssh-agent 2> nul
for /f "tokens=1 delims=;" %%a in ('ssh-agent') do (
echo %%a | findstr /C:"SSH" 1>nul
if errorlevel 1 (
echo Ignore %%a
) else (
echo set %%a
set %%a
)
)
ssh-add ~/.ssh/*%1*
ssh-add -l
Дополнением к ответу о start-ssh-agent.cmd было бы запуск его при запуске и сделать его универсальным для всех оболочек. Это можно сделать, поместив его f.ex. в вашем каталоге .ssh, создав символическую ссылку на папку автозагрузки (с возможностью свернутого запуска) и применив следующий патч:
--- "C:\\Program Files\\Git\\cmd\\start-ssh-agent.cmd" 2023-06-01 16:34:16.000000000 +0300
+++ start-ssh-agent.cmd 2023-08-09 00:31:44.304425700 +0300
@@ -25,6 +25,7 @@
@FOR %%s IN ("!SSH_AGENT!") DO @SET BIN_DIR=%%~dps
@FOR %%s in ("!BIN_DIR!") DO @SET BIN_DIR=!BIN_DIR:~0,-1!
@FOR /D %%s in ("!BIN_DIR!\ssh-add.exe") DO @SET SSH_ADD=%%~s
+ @FOR /D %%s in ("!BIN_DIR!\cygpath.exe") DO @SET CYGPATH=%%~s
@IF NOT EXIST "!SSH_ADD!" @GOTO ssh-agent-done
@REM Check if the agent is running
@FOR /f "tokens=1-2" %%a IN ('tasklist /fi "imagename eq ssh-agent.exe"') DO @(
@@ -77,9 +78,11 @@
:failure
@ENDLOCAL & @SET "SSH_AUTH_SOCK=%SSH_AUTH_SOCK%" ^
- & @SET "SSH_AGENT_PID=%SSH_AGENT_PID%"
+ & @SET "SSH_AGENT_PID=%SSH_AGENT_PID%" ^
+ & @SET "CYGPATH=%CYGPATH%"
-@ECHO %cmdcmdline% | @FINDSTR /l "\"\"" >NUL
-@IF NOT ERRORLEVEL 1 @(
- @CALL cmd %*
+@for /f %%c in ('"%CYGPATH%" -m %SSH_AUTH_SOCK%') do @(
+ @setx SSH_AUTH_SOCK "%%c" > nul
+ @set "SSH_AUTH_SOCK=%%c"
)
+@setx SSH_AGENT_PID %SSH_AGENT_PID% > nul
Таким образом, вы получите SSH_AUTH_SOCK в каждой используемой оболочке. Внизу этого файла вы можете добавить любые своиssh-add
команды.
Я только что настроил SSH-аутентификацию с помощью Github. Просто можно использовать «Pageant», который устанавливается вместе с Putty.
Вам нужно будет добавить конкурс в папку автозагрузки Windows, чтобы он запускался вместе с Windows (или запускал его каждый раз, прежде чем вам потребуется аутентификация).
В этом сообщении блога хорошо объясняется все, что вам нужно сделать для настройки Github в Windows с помощью Putty и Pageant.
Вы должны запустить агент ssh и сгенерировать ключ ssh с помощью команды рекоммендации "ssh-keygen -t rsa -b 4096 - C" ваш адрес электронной почты "