【问题标题】:How to run ssh-add on windows?如何在 Windows 上运行 ssh-add?
【发布时间】:2013-09-12 01:09:37
【问题描述】:

我正在关注#335 Deploying to a VPS ,在剧集快要结束时,我们需要运行ssh-add 以授予服务器对 github 存储库的访问权限。

问题是如何在 Windows 中运行它?需要安装什么?

我知道要运行ssh 来访问远程服务器,我可以使用Putty。但是这个命令需要在本地运行,我知道怎么用Putty来做这个。

【问题讨论】:

  • 其实。你不需要。使用 Pageant(Putty 的 ssh-agent)...如果你真的想以 Unix/Linux 的方式来做,你需要安装 gitbash、mingw 或类似的东西。有了 Pageant,您就不必这样做了。

标签: windows ssh


【解决方案1】:

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

确保你已经安装了 Git,并且你的 PATH 中有 git 的 cmd 文件夹。比如我的电脑上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 内部使用的版本之间的不一致。 This should prevent issues that are similar to this

这个解决方案的一些优点:

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

希望对你有帮助

【讨论】:

  • start-ssh-agent。这就是我环顾一小时后所需要的。谢谢!
  • 我认为start-ssh-agent 确实适用于 PowerShell。但是,我以管理员身份运行 PowerShell,所以这可能是关键。
  • 对我来说,Windows 服务“OpenSSH 身份验证代理”已禁用,这很有帮助,谢谢
  • 知道如何将密钥文件的名称更改为 id_rsa 以外的名称吗?
  • @FlexMcMurphy 您是否安装了 OpenSSH 身份验证代理?如果你有,也许你需要关闭并重新打开 powershell。
【解决方案2】:

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

Step 3: Add your key to the 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
    

【讨论】:

  • 如何运行第一行cd ~/.ssh?我们在windows中,不应该是'C:/'之类的吗?
  • 似乎对我有用:我打电话给D:\>"c:\Program Files\Git\cmd\start-ssh-agent.cmd"
  • eval : 术语“eval”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。
  • 除了 Git Bash,这个答案完全是错误的,就像它被复制/粘贴的文章一样。
  • @BernhardDöbler start-ssh-agent.cmd 应该是正确答案!非常感谢!
【解决方案3】:

如果你不使用 GitBash - 你需要使用这个命令来启动你的 ssh-agent

start-ssh-agent.cmd

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

if( ($startupType =(Get-Service -Name ssh-agent | Select-Object -Property StartupType).StartupType) -ne  [System.ServiceProcess.ServiceStartMode]::Manual){
    if((Get-Service -Name ssh-agent | Select-Object -Property Status ).Status -ne [System.ServiceProcess.ServiceControllerStatus]::Running){
        Get-Service -Name ssh-agent | Set-Service -StartupType Manual
        Start-Sleep -Milliseconds 300 # Wait for the service host to respond before fiddling with it
        Start-Service -Name ssh-agent
        Get-Service -Name ssh-agent | Get-Process
    }
} else {
    Start-Service -Name ssh-agent
}

【讨论】:

  • 这是 5 年来投票率最高的答案,哈哈……stackoverflow.com/a/40720527/5362826 有时你必须按票数排序!
  • 很公平。我想我指的是必须启动服务以及在 cmets 中。我将把它留在这里,希望这是一个更简洁的答案,可以帮助人们快速上手。
【解决方案4】:

2021 答案

Microsoft 近年来改进了 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

【讨论】:

    【解决方案5】:

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

    vi ~/.ssh/config
    
    Host example.com
    IdentityFile ~/.ssh/example_key
    

    【讨论】:

    • 我在其他所有评论中都做了所有的事情,但这就是最终使它对我有用的原因。我用 github.com 替换了 example.com,因为我无法克隆或推送或任何东西(我收到 Git:Permission denied (publickey) 错误)
    • 男人。我在使用 cmd 的 Windows 10 上,这是唯一允许我使用非默认 rsa 键名的东西。我无法让 OpenSSH 的 ssh-add 工作,也无法让 git ssh 工具的 ssh-add 工作。使这个配置文件最终排序。
    【解决方案6】:

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

    【讨论】:

    • 这应该更高。在 Powershell 或 CMD 中工作。
    • 'start-ssh-agent' 未被识别为内部或外部命令
    【解决方案7】:

    为了在 Windows 上运行 ssh-add,可以使用 choco install git 安装 git。在将 C:\Program Files\Git\usr\bin 添加为 PATH 变量并重新启动命令提示符后,即可识别 ssh-add 命令:

    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> 
    

    【讨论】:

    • 是的!对路径执行C:\Program Files\Git\usr\bin 终于解决了! Everone 在 \Git 中处理各种其他文件夹,但不是 usr\bin
    【解决方案8】:

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

    https://gitforwindows.org/

    【讨论】:

      【解决方案9】:
      eval "$(ssh-agent -s)" 
      
      ssh-add C:/Users/Dell/.ssh/gitlab (your path)
      
      git clone repo_link
      

      【讨论】:

        【解决方案10】:

        以下解决方案解决了我的问题。请务必在管理员模式下运行您的 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 密钥文件)

        我找到了解决方案here

        【讨论】:

          【解决方案11】:

          这适用于 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 
          

          【讨论】:

            【解决方案12】:

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

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

            blog post 很好地解释了在 Windows 上使用 Putty 和 Pageant 配置 Github 所需的一切。

            【讨论】:

              【解决方案13】:

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

              ssh-keygen -t rsa -b 4096 -C "your email"
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2013-01-09
                • 2017-06-27
                • 2021-07-25
                • 2021-09-04
                • 2021-08-12
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多