SSH 选项 SecurityKeyProvider 可从命令行运行,但不能在配置文件 linux WSL 中运行——其他选项也可以

SSH 选项 SecurityKeyProvider 可从命令行运行,但不能在配置文件 linux WSL 中运行——其他选项也可以

我正在尝试 ssh 进入我的工作服务器,但这个错误已经困扰我几个月了。我的文件中的所有其他选项config(位于~/.ssh/config)都可以正常工作,但由于某种原因 SecurityKeyProvider 不能。看一下:

Host [work-server]
     HostName [work-server.work.com]
     SecurityKeyProvider /usr/local/lib/libwindowsfidobridge.so
     IdentityFile ~/.ssh/id_ecdsa_sk
     ServerAliveInterval 60
     ForwardX11Trusted no
     ForwardX11 no
     ForwardAgent no

但由于某种原因我必须从命令行运行: ssh -o SecurityKeyProvider=/usr/local/lib/libwindowsfidobridge.so me@[work-server.work.com]而不仅仅是ssh me@[work-server.work.com]

答案1

(在这个答案中,我决定不混淆你使用的内容[]

Host work-serverssh work-server如果您调用or 例如ssh me@work-server;将匹配它会不是如果您调用ssh work-server.work.com或 则匹配。ssh [email protected]

文件后面的内容HostName work-server.work.com无关紧要。的值Host是尝试匹配您在命令行中使用的主机名。HostName指定要登录的真实主机名,它不会尝试匹配任何内容。

这意味着您的配置未在 上使用。您写了“所有其他选项 [...] 工作正常”,但这只是一种幻觉,因为在您的配置中,许多其他选项无论如何都设置为默认值,因此对于它们来说,您的配置工作和不工作之间没有区别(甚至据称有效,因为它的默认值是命令行中给出的名称,并且您给出了完全正确的名称)。事实证明,问题在于第一个产生显着差异的选项。ssh [email protected]HostNameSecurityKeyProvider

Host如果您发现和之间的区别HostName不直观,请考虑以下示例:

Host foo
  HostName bar
  # config A here

Host baz
  HostName bar
  # config B here

ssh foobar将使用配置 A连接,ssh baz将使用配置 B 连接bar(因此,当您需要同一主机的两个或多个预定义配置,并且您希望在调用时轻松选择其中之一时,整个设置非常有用ssh) 。ssh bar既不匹配也不匹配Host fooHost baz因此它既不使用 A 也不使用 B。您可以添加Host bar并定义一个配置ssh bar(例如配置 C);或者您可以添加bar到已存在的行之一Host:例如,如果您制作了第一行Host foo bar,则两者都ssh foossh bar使用配置 A (并bar由于 而将您连接到Hostname bar)。

对于您的情况,请使用ssh me@work-server.如果你ssh work-server.work.com使用配置,添加work-server.work.comHost行:

Host work-server work-server.work.com
# the rest of your config here

相关内容