RNa*_*are 5 windows ssh openssh windows-10
ssh-add
在尝试完成更复杂的任务(涉及用于 SSH 身份验证的硬件安全密钥和 GPG 密钥)的过程中,我在 Windows 10 计算机上遇到了一个脾气暴躁的实用程序。很简单,我的ssh-add
无法连接到代理,而所有其他 ssh 功能都工作正常。
当我ssh-add -L
在 Powershell 7.0.3 上运行时,我得到以下输出:
Error connecting to agent: No such file or directory
Run Code Online (Sandbox Code Playgroud)
但是,我的ssh-agent
服务似乎运行得很好:
C:\Users\[me]> get-service ssh-agent
Status Name DisplayName
------ ---- -----------
Running ssh-agent OpenSSH Authentication Agent
C:\Users\[me]> get-service ssh-agent | select *
UserName : LocalSystem
Description : Agent to hold private keys used for public key authentication.
DelayedAutoStart : False
BinaryPathName : C:\WINDOWS\System32\OpenSSH\ssh-agent.exe
StartupType : Automatic
Name : ssh-agent
RequiredServices : {}
CanPauseAndContinue : False
CanShutdown : False
CanStop : True
DisplayName : OpenSSH Authentication Agent
DependentServices : {}
MachineName : .
ServiceName : ssh-agent
ServicesDependedOn : {}
StartType : Automatic
ServiceHandle :
Status : Running
ServiceType : Win32OwnProcess
Site :
Container :
C:\Users\[me]> get-command ssh-add
CommandType Name Version Source
----------- ---- ------- ------
Application ssh-add.exe 7.7.2.1 C:\WINDOWS\System32\OpenSSH\ssh-add.exe
Run Code Online (Sandbox Code Playgroud)
此外,我的标准公共/私有 SSH 密钥对位于默认位置 ( C:\Users\[me]\.ssh\id_rsa
、C:\Users\[me]\.ssh\id_rsa.pub
)。我在 GitHub 上广泛使用了这个密钥,ssh
它在 Powershell 中仍然可以正常工作:
C:\Users\[me]> ssh -T git@github.com
Enter passphrase for key 'C:\Users\[me]/.ssh/id_rsa':
Hi [me]! You've successfully authenticated, but GitHub does not provide shell access.
Run Code Online (Sandbox Code Playgroud)
那么,鉴于 OpenSSH 的所有其他方面似乎都工作正常,为什么会ssh-add
出现行为不当呢?
我尝试修复它的事情:
.ssh
文件夹,生成新密钥(通过ssh-keygen
),然后从头开始。ssh-agent
在自动、手动和禁用之间更改服务的启动类型上述活动似乎都没有任何效果。所有其他ssh
工具都工作正常(假设启用了可选功能并且服务正在运行),但ssh-add
事实并非如此。
其他人对于诊断这个烦人的实用程序还有哪些其他建议?
事实证明,就我而言,我的 PowerShell/Cmd 环境中有一个过时的环境变量SSH_AUTH_SOCK
. 它指向一个不存在的套接字/管道,这导致ssh-add
实用程序(正确地)抱怨“没有这样的文件或目录”。
ssh-add
只需完全删除环境变量就可以实现无错误运行的技巧:
C:\Users\[me]> Get-Item Env:\SSH_AUTH_SOCK
Name Value
---- -----
SSH_AUTH_SOCK \\.\pipe\this-socket-never-existed
C:\Users\[me]> Remove-Item Env:\SSH_AUTH_SOCK
Run Code Online (Sandbox Code Playgroud)
现在,我之所以SSH_AUTH_SOCK
首先进行设置,是因为我想在我的硬件安全密钥 (Yubikey) 和 Windows 10 本机 OpenSSH 代理之间建立一座桥梁。就我而言,我尝试(但失败了)让 Benpye 的WSL SSH Pageant在启动时运行。
但是,当程序实际上按照文档建议运行时:
C:\Users\[me]> wsl-ssh-pageant.exe --winssh ssh-pageant
C:\Users\[me]> $Env:SSH_AUTH_SOCK = "\\.\pipe\ssh-pageant"
Run Code Online (Sandbox Code Playgroud)
我发现它不仅ssh-add
运行没有错误,而且在查询时它还能识别并使用我的 Yubikey 的公共身份验证密钥。
C:\Users\[me]> ssh-add -L
ssh-rsa [key]
Run Code Online (Sandbox Code Playgroud)
所以,TL;DR 是我对过时的环境变量的疏忽导致了ssh-add
“文件未找到”错误的终止。
归档时间: |
|
查看次数: |
10840 次 |
最近记录: |