Windows 10 Bash 上的 SSH 私钥认证

Windows 10 Bash 上的 SSH 私钥认证

我在笔记本电脑上安装了一些 Linux,并使用带有私钥身份验证的 SSH 连接到服务器。最近,我在台式机上安装了带有 bash 开发人员扩展的 Win10。由于我在此服务器上只有一个用户帐户,因此只有一个密钥,我只需将私钥文件移动到我的 Windows bash 的相应目录中即可。

但是,每当我打开一个新的 bash 实例并尝试连接到服务器时,都会返回错误消息:“权限被拒绝(公钥)。”我目前的修复方法是以下步骤:exec ssh-agent bash; ssh-add;

虽然我可以将其添加到 .profile 中,但每次打开 bash 时都需要输入密码。

是否有人对如何更正确地修复此问题有一些建议,我只需要在连接到服务器时输入密码,而不必在每个 bash 会话中重新初始化我的 ssh 密钥。

亲切的问候

答案1

密钥只能由其指定的用户访问,其他帐户、服务或组均不能访问。

  • 我不使用 WSL,因为它是一场安全噩梦,产生的问题比解决的问题还多,所以我将提供两种设置正确权限的方法


Windows Powershell 终端


  • 图形用户界面(GUI):
    • [文件] 属性 - 安全 - 高级
      1. 所有者对于密钥的用户
      2. 删除所有用户、组和服务,除了钥匙的用户, 在下面权限条目
      3. 将密钥的用户设置为完全控制


  • 命令行:

    :: Set Variable ::
    set key="C:\Path\to\key"
    
    :: Remove Inheritance ::
    cmd /c icacls %key% /c /t /inheritance:d
    
    :: Set Ownership to Owner ::
    cmd /c icacls %key% /c /t /grant %username%:F
    
    :: Remove All Users, except for Owner ::
    cmd /c icacls %key%  /c /t /remove Administrator BUILTIN\Administrators BUILTIN Everyone System Users
    
    :: Verify ::
    cmd /c icacls %key%
    


WSL Bash 终端


  • 命令行界面

    # Set Variables
    
      # Key  
        key="/path/to/key"
    
      # User:
        user="$(echo $USER)"
    
    # Set Ownership
      # This assumes user's name is also user's group name
        chown $user:$user $key
    
    # Set Access Rights
      chmod 0600 $key
    
    # Verify
    ls -l $key
    

相关内容