使用公钥从 Windows 客户端通过 SSH 连接到 Linux 服务器时出现问题

使用公钥从 Windows 客户端通过 SSH 连接到 Linux 服务器时出现问题

这个问题是 Cygwin 特有的。

我的目的是从 Windows 10 Pro 客户端通过 SSH 连接到 Linux Debian 9 Stretch 服务器。

我目前已完成的步骤:

  1. 使用 OpenSSH 包安装 Cygwin。

  2. 在 Cygwin 中生成的私有-公共对:

    ssh-keygen -t rsa -b 8192
    
  3. 将服务器的公钥复制到 Cygwin:

    ssh-copy-id user_name@ip_address -p port_number
    
  4. 首次连接服务器:

    ssh user_name@ip_address -p port_number
    

    它告诉我:

    The authenticity of host '[ip_address]:port_number ([ip_address]:port_number)' can't be established.
    

    ... 您确定要继续连接吗(是/否)?

    我回答yes

  5. 我在 Cygwin 中定义了一个别名并获取了它的来源:

    vi .bash_aliases
    

    和第一次连接一模一样。

  6. 我重新启动了 Cygwin。

  7. 现在我遇到的问题是,当我这样做时:

    ssh-server
    

    它总是要求我输入私钥密码。我不知道为什么。因为它显然是加密的,但我该如何摆脱它呢?:

    Enter passphrase for key '/home/user_name/.ssh/id_rsa':
    

注意:从我的 Linux 机器连接时,它不会要求输入该密码。我是不是漏掉了什么步骤?

编辑:

  1. 当我启动 SSH 代理并添加密钥时,我就可以完美地连接:

    • 启动 SSH 代理:

      eval `ssh-agent -s`
      
    • 将缺失的密钥添加到身份:

      ssh-add
      

但这只对一个会话有效,为什么它不是永久的?

答案1

由于我无法使用未加密的私钥,因此我必须设置密码。我希望有一些技巧可以在登录时解锁我的密钥。但看起来,这不会发生。

因此,当 Cygwin 在启动时总是要求我输入密码时,我便放弃了解决方案。

你可以使用任何已安装的编辑器,我使用的是nano,编辑你的启动文件,例如:

nano .bashrc

只需将这两行添加到文件末尾即可:

eval `ssh-agent -s`
ssh-add

您可以找到有关以下方面的更多信息ssh-agent在手册中,同样适用于ssh-add

现在,每次您启动 Cygwin 终端时,它都会要求您输入私钥的密码。

相关内容