Как запустить 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.

  1. Убедитесь, что 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
      
  2. Добавьте ваш 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 в режиме администратора и выполните следующую операцию:

  1. Проверьте текущий статус ssh-agent: "Get-Service | select -property name, starttype" -> должно быть отключено

  2. Установите новый тип: «Set-Service -Name ssh-agent -StartupType Manual»

  3. Запустите его: "Start-Service ssh-agent"

  4. Добавьте просто свой ключ, как и раньше: "ssh-add" (например, ssh-add keyfile)

Я нашел решение здесь :

В графическом интерфейсе Git для Windows есть оконное приложение, которое позволяет вставлять в местоположения ключи ssh, URL-адрес хранилища и т. Д.

https://gitforwindows.org/

Это работает с простым 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" ваш адрес электронной почты "

Другие вопросы по тегам