PowerShell ssh 不会停止询问我安装的密钥的密码

blu*_*are 4 windows ssh ssh-keys

从 PowerShell 会话 (Windows 10) 登录时仍然要求我提供密钥密码。

事实证明这些是错误的参数:

ssh -o StrictHostKeyChecking=no
Run Code Online (Sandbox Code Playgroud)

或者

ssh -o "StrictHostKeyChecking=no"
Run Code Online (Sandbox Code Playgroud)

我发誓我有一个完美的忽略参数正在工作,但我丢失了它。

我想让 ssh 忽略我安装的密钥。

我在 ssh 密钥环中安装了一个密钥,用于访问关键设备。该密钥受密码保护(这会导致登录到不使用该密钥的其他系统时出现问题)。

mta*_*tak 6

StrictHostKeyChecking与您的私钥密码无关。它检查服务器的加密指纹是否与该服务器本地存储的加密指纹相同。还记得吗,第一次连接时,它会询问您指纹是否正常?现在它存储在 ~/.ssh/known_hosts 中,这就是它的比较对象。这是为了避免 MITM 攻击,而不需要像 SSL/TLS 这样的完整信任链。

现在,为了避免输入密钥密码,基本上有两种选择:

  • 删除密钥上的密码(ssh-keygen -p并且不要输入密码),这不是很安全,所以更好的选择:
  • 用于ssh-agent管理密钥

就我个人而言,我从未在 Powershell 中使用过 ssh-agent,但微软对此有如下说法

# By default the ssh-agent service is disabled. Allow it to be manually started for the next step to work.
# Make sure you're running as an Administrator.
Get-Service ssh-agent | Set-Service -StartupType Manual

# Start the service
Start-Service ssh-agent

# This should return a status of Running
Get-Service ssh-agent

# Now load your key files into ssh-agent
ssh-add ~\.ssh\id_ed25519
Run Code Online (Sandbox Code Playgroud)