【问题标题】:SSH doesn't use public key for authentication (Windows)SSH 不使用公钥进行身份验证 (Windows)
【发布时间】:2020-06-23 05:12:24
【问题描述】:

我有一个 VPS(Windows Server 2016)并在其上使用 OpenSSH for windows 在其上运行了一个 SSH 服务器。我会在这个 VPS 上运行一个 git 服务器,所以我在 google 中搜索了一些教程并找到了this。 配置服务器端设置的教程没问题,我创建了一个裸 git 存储库。我会使用自己的计算机使用 SSH 公钥连接到 git 服务器,但它需要我的密码!我试图将我自己电脑上生成的公共密钥(没有密码)保存在服务器的 /.ssh/authorized_keys 文件中,但它没有用。当我使用此git clone user@IP_ADDRESS:<repo dir> 命令从服务器克隆现有存储库时,它一直告诉我应该输入密码:

Cloning into 'central'...
user@IP_ADDRESS's password:

我试图通过按回车键来跳过密码提示,也尝试了 root 输入密码,但它无论如何都没有帮助。 虽然我使用ssh -Tv git@IP_ADDRESS 一步一步地查看正在发生的事情,但我意识到publickey 身份验证被跳过,进程继续使用password 身份验证方法。

【问题讨论】:

    标签: git ssh


    【解决方案1】:

    git@IP_ADDRESS 的意思是你连接的是“git”用户而不是“root”,它是否存在于服务器中? ~/.ssh/authorized_keys 必须添加到用户的 home 中。

    /home/git/.ssh/authorized_keys
    

    或者在你的情况下(编辑我在 Linux 中考虑:)):

    C:\Users\git\.ssh\authorized_keys
    

    希望对你有帮助

    【讨论】:

    • 如果你需要的话,我可以添加关于私钥认证的解释。只是要求它。
    • 实际上我使用的是服务器上可用的用户而不是“git”(我编辑了帖子)。所以它应该使用 authorized_keys 文件给我访问权限,但它没有。不知道为什么会这样。
    • 在我看到的文档中:为所有 Git 用户创建 Windows 用户。您创建了哪些用户?
    • 您必须在 ssh 连接中使用以下用户之一:ssh {user}@IPADDRESS
    • 基本上,先用user+password 使ssh 工作,然后尝试用public key 工作,这是正确的配置方式。
    【解决方案2】:

    实际上问题在于服务器上当前用户组的权限。在我的情况下,该用户具有管理员权限,因此 SSH 将在 %PROGRAMDATA%/ssh/administrator_authorized_keys 中搜索公钥。对于 Windows 中的普通用户帐户,SSH 会自动转到我正在复制我的机器公共 SSH 密钥的/users/{username}/.ssh/authorized_keys 文件。所以我将我的公钥移到了administrator_authorized_keys 文件中,现在一切正常。 感谢@EdKenbers的回复。

    【讨论】:

    猜你喜欢
    • 2015-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-17
    • 1970-01-01
    • 2015-08-20
    • 2013-10-08
    相关资源
    最近更新 更多