我正在尝试 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-server
ssh 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]
HostName
SecurityKeyProvider
Host
如果您发现和之间的区别HostName
不直观,请考虑以下示例:
Host foo
HostName bar
# config A here
…
Host baz
HostName bar
# config B here
…
ssh foo
bar
将使用配置 A连接,ssh baz
将使用配置 B 连接bar
(因此,当您需要同一主机的两个或多个预定义配置,并且您希望在调用时轻松选择其中之一时,整个设置非常有用ssh
) 。ssh bar
既不匹配也不匹配Host foo
,Host baz
因此它既不使用 A 也不使用 B。您可以添加Host bar
并定义一个配置ssh bar
(例如配置 C);或者您可以添加bar
到已存在的行之一Host
:例如,如果您制作了第一行Host foo bar
,则两者都ssh foo
将ssh bar
使用配置 A (并bar
由于 而将您连接到Hostname bar
)。
对于您的情况,请使用ssh me@work-server
.如果你ssh work-server.work.com
想还使用配置,添加work-server.work.com
到Host
行:
Host work-server work-server.work.com
# the rest of your config here