如何在 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?的主要内容,如果未能解决你的问题,请参考以下文章
Win10 OpenSssh:ssh-add 为密钥文件提供错误“无效格式”
Git - 如何在 Windows 10 上删除 SSH 密钥
Windows 10 OpenSSH ssh-add“代理拒绝操作”(GitLab Windows Shared Runner)