137

I'm following #335 Deploying to a VPS , and near the end of the episode, we need to run ssh-add to give server access to github repo.

The problem is how do I run it in windows? What need to install?

I know that to run ssh to access the remote server, I can use Putty. But this command needs to run locally, I do know how to use Putty to do this.

4

13 回答 13

269

使用 git 的 start-ssh-agent 的原始答案

确保你已经安装了 Git 并且cmd在你的 PATH 中有 git 的文件夹。例如,在我的计算机上 git 的 cmd 文件夹的路径是C:\Program Files\Git\cmd

确保您的id_rsa文件在文件夹中c:\users\yourusername\.ssh

如果您还没有重新启动命令提示符,然后运行start-ssh-agent​​. 它会找到您id_rsa并提示您输入密码

2019 年更新 - 如果您使用的是 Windows 10,这是一个更好的解决方案: OpenSSH 可作为 Windows 10 的一部分使用,我认为这使得从 cmd/powershell 使用 SSH 变得更加容易。与我之前的解决方案不同,它也不依赖于安装 git。

  1. 从开始菜单打开Manage optional features并确保您Open SSH Client在列表中。如果没有,您应该可以添加它。

  2. Services从开始菜单打开

  3. 向下滚动到OpenSSH Authentication Agent> 右键单击​​ > 属性

  4. 将启动类型从禁用更改为其他 3 个选项中的任何一个。我的设置为Automatic (Delayed Start)

  5. 打开 cmd 并键入where ssh以确认顶部列出的路径在 System32 中。我的安装在C:\Windows\System32\OpenSSH\ssh.exe. 如果它不在列表中,您可能需要关闭并重新打开 cmd。

完成这些步骤后,ssh-agent、ssh-add 和所有其他 ssh 命令现在应该可以在 cmd 中运行。要启动代理,您只需键入ssh-agent.

  1. 可选步骤/故障排除:如果您使用 git,您应该将GIT_SSH环境变量设置为where ssh您之前运行的输出(例如C:\Windows\System32\OpenSSH\ssh.exe)。这是为了阻止您使用的 ssh 版本(以及添加/生成的密钥)与 git 内部使用的版本之间的不一致。这应该可以防止与此类似的问题

关于这个解决方案的一些好处:

  • 每次重新启动计算机时都不需要启动 ssh-agent
  • 您添加的身份(使用 ssh-add)将在重新启动后自动添加。(它适用于我,但您可能需要在您的 c:\Users\User\.ssh 文件夹中有一个配置文件)
  • 你不需要 git!
  • 您可以向代理注册任何 rsa 私钥。另一种解决方案只会选择一个名为id_rsa

希望这可以帮助

于 2016-11-21T12:44:45.500 回答
114

可以为 Windows 安装Git,然后运行ssh-add

第 3 步:将您的密钥添加到 ssh-agent

要配置 ssh-agent 程序以使用您的 SSH 密钥:

如果您安装了 GitHub for Windows,您可以使用它来克隆存储库,而无需处理 SSH 密钥。它还附带 Git Bash 工具,这是在 Windows 上运行 git 命令的首选方式。

  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
    
于 2013-09-08T12:12:57.040 回答
30

如果您不使用 GitBash - 您需要使用此命令启动 ssh-agent

start-ssh-agent.cmd

如果您的 ssh 代理未设置,您可以以管理员身份打开 PowerShell 并将其设置为手动模式

Get-Service -Name ssh-agent | Set-Service -StartupType Manual
于 2020-08-03T14:35:47.893 回答
26

2021答案

微软近年来改进了 ssh-key 支持。现在有一个功能齐全的“服务”可以运行。

来自https://docs.microsoft.com/en-us/windows-server/administration/openssh/openssh_keymanagement

在(管理员)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
于 2021-07-15T01:04:21.777 回答
14

如果您尝试设置密钥以将 git 与 ssh 一起使用,则始终可以选择为身份文件添加配置。

vi ~/.ssh/config

Host example.com
IdentityFile ~/.ssh/example_key
于 2018-11-20T16:08:07.757 回答
13

我以前也遇到过类似的情况。在命令提示符下,输入“start-ssh-agent”,瞧!ssh-agent 将被启动。如果它询问您,请输入密码。

于 2020-01-01T14:42:24.160 回答
9

为了ssh-add在 Windows 上运行,可以使用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> 
于 2015-08-26T18:55:40.853 回答
1

适用于 Windows 的 Git GUI 有一个基于窗口的应用程序,允许您粘贴 ssh 密钥和 repo url 等位置:

https://gitforwindows.org/

于 2019-03-11T23:32:14.587 回答
1
eval "$(ssh-agent -s)" 

ssh-add C:/Users/Dell/.ssh/gitlab (your path)

git clone repo_link
于 2021-03-10T11:49:53.243 回答
1

以下解决方案解决了我的问题。请务必在管理员模式下运行您的 powershell 并执行以下操作:

  1. 检查 ssh-agent 的当前状态:"Get-Service | select -property name,starttype" --> 应该是 Disabled

  2. 设置新类型:“Set-Service -Name ssh-agent -StartupType Manual”

  3. 启动它:“Start-Service ssh-agent”

  4. 像以前一样简单地添加您的密钥:“ssh-add”(例如 ssh-add 密钥文件)

我在这里找到了解决方案:

于 2021-05-18T18:28:50.567 回答
0

您应该启动 ssh 代理并使用 recommand 命令生成 ssh 密钥

ssh-keygen -t rsa -b 4096 -C "your email"
于 2021-07-14T06:08:59.590 回答
0

这适用于 win7 和 win10 以及 cygwin ssh/git/github 上的普通 cmd:

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 
于 2021-05-21T18:26:46.033 回答
0

我刚刚使用 Github 设置了 SSH 身份验证。只需使用与 Putty 一起安装的“Pageant”即可。

您需要将 pageant 添加到您的 Windows 启动文件夹中,以便它在 Windows 启动时启动(或每次在您需要进行身份验证之前启动它)

这篇文很好地解释了在 Windows 上使用 Putty 和 Pageant 配置 Github 所需要做的一切。

于 2021-07-21T20:18:13.557 回答