我在笔记本电脑上安装了一些 Linux,并使用带有私钥身份验证的 SSH 连接到服务器。最近,我在台式机上安装了带有 bash 开发人员扩展的 Win10。由于我在此服务器上只有一个用户帐户,因此只有一个密钥,我只需将私钥文件移动到我的 Windows bash 的相应目录中即可。
但是,每当我打开一个新的 bash 实例并尝试连接到服务器时,都会返回错误消息:“权限被拒绝(公钥)。”我目前的修复方法是以下步骤:exec ssh-agent bash; ssh-add;
虽然我可以将其添加到 .profile 中,但每次打开 bash 时都需要输入密码。
是否有人对如何更正确地修复此问题有一些建议,我只需要在连接到服务器时输入密码,而不必在每个 bash 会话中重新初始化我的 ssh 密钥。
亲切的问候
答案1
密钥只能由其指定的用户访问,其他帐户、服务或组均不能访问。
- 我不使用 WSL,因为它是一场安全噩梦,产生的问题比解决的问题还多,所以我将提供两种设置正确权限的方法
Windows Powershell 终端
- 图形用户界面(GUI):
- [文件] 属性 - 安全 - 高级
- 放所有者对于密钥的用户
- 删除所有用户、组和服务,除了钥匙的用户, 在下面权限条目
- 将密钥的用户设置为完全控制
- [文件] 属性 - 安全 - 高级
命令行:
:: 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