如何在 Windows 上运行 ssh-add?

Posted

技术标签:

【中文标题】如何在 Windows 上运行 ssh-add?【英文标题】:How to run ssh-add on windows? 【发布时间】: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,您就不必这样做了。 【参考方案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。

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

    从开始菜单打开Services

    向下滚动至OpenSSH Authentication Agent > 右键单击​​> 属性

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

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

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

    可选步骤/故障排除:如果你使用 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 命令的首选方式。

    确保 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
    

【讨论】:

如何运行第一行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 年来投票率最高的答案,哈哈……***.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 并执行以下操作:

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

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

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

    像以前一样简单地添加您的密钥:“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"

【讨论】:

以上是关于如何在 Windows 上运行 ssh-add?的主要内容,如果未能解决你的问题,请参考以下文章

带参数的 ssh-add - [重复]

Win10 OpenSssh:ssh-add 为密钥文件提供错误“无效格式”

Git - 如何在 Windows 10 上删除 SSH 密钥

Windows 10 OpenSSH ssh-add“代理拒绝操作”(GitLab Windows Shared Runner)

我需要在每次启动时重新运行 eval(ssh-agent) 和 ssh-add

ssh-add: 无法添加身份 xxx 代理拒绝操作