【问题标题】:Setting up passwordless authentication from one host to another设置从一台主机到另一台主机的无密码身份验证
【发布时间】:2014-12-15 07:09:20
【问题描述】:

我正在尝试设置从一台主机到另一台主机的无密码身份验证。下面是场景:

用户 A 有权访问主机 A (Windows Server)。 用户 B 可以访问主机 B(Unix 服务器)(不是直接访问。您需要使用不同的帐户登录主机,然后 su 到用户 B)

我想知道是否可以为主机 A 设置无密码身份验证以作为用户 B 连接到主机 B?

我尝试从主机 A 获取公钥并将其添加到 authorized_keys (.../.ssh/authorized_keys) 文件中。我检查了 authorized_keys 的权限是 600,.ssh 的权限是 700。

authorized_keys的内容如下:

---- 开始 SSH2 公钥 ---- ssh-rsa AAAAB3NzaC1yc2EAAAABJQCCCIEAwc4rPjPeehHYe1VmUX4/X8pZwtqBawwD56Ksfi3wlEiM ZlbO1kH1a+eBAC51aWgYbuAiKsLCaVVtZKx0ArcfJzWvnO36VpHGYxPEMpBG/YzoxVwh5WL2DUNIjJ1/ ZePAeayg/4RvBp2y9Ds1TQB29Oe3tTVeRTY3eUky4zSWEQE== UserA@HostA 01 ---- 结束 SSH2 公钥 ----

我在文件中尝试了几种 User@host 组合,包括 userB@hostB,但无济于事。

如果我正在尝试一些不可能的事情(可能是我做的不对),有人可以告诉我吗?或者我有什么遗漏?

任何帮助将不胜感激。谢谢。

【问题讨论】:

    标签: windows unix ssh authorized-keys


    【解决方案1】:

    authorized_keys 由 options、keytype、base64 编码的 keycomment 字段组成。在您的示例中未提及选项(可选且不是必需的)。最后一部分是没有真正使用的注释。

    HostB 上修改 ~UserB/.ssh/authorized_keys 如下所示单行并注意您没有引入空格

    ssh-rsa AAAAB3NzaC1yc2EAAAABJQCCCIEAwc4rPjPeehHYe1VmUX4/X8pZwtqBawwD56Ksfi3wlEiMZlbO1kH1+eBAC51aWgYbuAiKsLCaVVtZKx0ArcfJzWvnO36VpHGYxPEMpBG/YzoxVwh5WL2DUNijJ1/ZePAeayg/4RvBp2y9Ds1TQB29Oe3tTVeRTY3eUky4zSWEQE== UserB@HostB

    您使用哪个 ssh 客户端从主机 A 连接到主机 B? Cygwin ssh 还是 Putty?

    1. 如果您在 HostA 上使用 Cygwin ssh,请尝试运行:

      ssh UserB@HostBssh -i <yourPrivateKey> UserB@HostB

    2. 如果您使用的是 Putty,您可能需要将私钥导入 Putty 密钥生成器并保存为“.ppk”文件。在主机名中指定 UserB@HostB 并在 Connection -> SSH -> Auth -> Private key... 浏览到您的“.ppk”文件。

    【讨论】:

    • 恭喜您获得第一个投票赞成的答案!它写得很好,很清楚。