需要帮助在 cygwin 中配置 ssh

需要帮助在 cygwin 中配置 ssh

我有这个配置~/.ssh/config

Host *.myhost.com
 User awwuser
 IdentityFile my-keys/myhost/id_dsa

问题是,我为不同的主机设置了 2 个不同的私钥,并且该主机有 2 个不同的用户,因此我不想每次通过 ssh 选项都把它们记下来。我发现,我可以创建一个配置文件,它将自动设置要使用的用户名和私钥。

据我从文档中理解,我所做的一切都是正确的。

但这个配置似乎根本不起作用。当我这样做时,ssh subdomain.myhost.com它会尝试使用当前用户名而不是配置中指定的用户名进行连接。当我通过 ssh 选项指定用户名时,它看不到正确的身份文件。所以我的配置似乎根本不起作用。

请指教。

PS 我正在使用 open ssh 6.0

答案1

首先,您可能要记住,您的 SSH 配置选项是从上到下读取的。

根据您的设置,您的配置设置默认值中可能还有一个全局部分。有点像这样。

Host *
    ForwardAgent yes
    ForwardX11 yes
    ForwardX11Trusted yes
    Protocol 2
    AddressFamily inet
    SendEnv LANG LC_*
    HashKnownHosts no
    GSSAPIAuthentication no

如果该部分位于您的部分之前,则将使用该部分的设置*。通常,您希望按从最具体到最不具体的设置顺序排列 SSH 配置文件。

就像这样。

  host fully.qualitified.tld
   ...
  host *.example.com
   ...
  host *

您还必须记住,名称匹配与您在命令行中输入的确切名称相匹配。它不会考虑您可能获得的 DNS 搜索,因为您的搜索路径中有 myhost.com。

因此,如果您运行命令ssh foo,并且恰好设置了 DNS,将 foo 解析为 foo.example.com,则 SSH 客户端将不会使用来自的任何设置host foo.example.com。您还可以通过在配置文件中添加多个别名来让生活更轻松,就像这样host foo.example.com foo.example foo

既然您提到您有多个密钥。请记住,您可能最好在客户端上启动 SSH 代理并添加所有密钥。然后让 SSH 自动协商要使用哪个密钥。您还可以IdentityFile在一个host *部分中有多个选项。SSH 将一次尝试所有选项。

答案2

谢谢大家的关注。我发现问题在于主机名中的域是错误的,并且我的 IdentityFile 路径不是绝对路径。在我设置了正确的主机名和完整路径后,一切开始正常工作。

相关内容