如何使用 ssh 密钥设置具有权限控制的 git 服务器?

如何使用 ssh 密钥设置具有权限控制的 git 服务器?

我尝试使用 ssh 密钥控制运行 git 服务器,但是没有用。就我个人的 git 使用情况而言,我可以毫无问题地设置 git 服务器并单独使用它。现在,为了使用 ssh 密钥来操作具有权限控制的 git 服务器(以便一些获得许可的人可以访问 git 服务器),我尝试了这种方法。

  1. 在机器 A (在my.server.ip.addr)上,我/home1/repos_test/nnn.git使用帐户创建了一个存储库prjgitprjgitsudo组中,我将目录的所有者和组更改nnn.gitprjgit
  2. 我在机器B上创建了另一个帐户,并生成了ssh密钥并将其内容粘贴到机器A的帐户文件中。ssh-keygen -C "[email protected]"id_rsa.pubprjgit.ssh/authorized_keys

但是当我尝试通过 git pull 时,它要求我输入密码,而我进入 git pull 的唯一方法是输入 的“帐户”密码。这不是我想要的。我希望 mike 无需密码即可进入,或者使用 自己的密码进入。我做错了什么?git pull ssh://[email protected]/home1/repos_test/nnn.git[email protected]'s password:prjgitmike

添加

根据@muru的建议,我尝试连接ssh -v ...,最后一部分如下所示。公钥方法似乎不起作用,它进入密码方法。

debug1: Next authentication method: publickey
debug1: Offering public key: /home/mthompson/.ssh/id_rsa RSA SHA256:6x3bHdxx1uTZSIRupFE3Lh+9b0Y4epRb7Lbx+3veT4w
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Trying private key: /home/mthompson/.ssh/id_dsa
debug1: Trying private key: /home/mthompson/.ssh/id_ecdsa
debug1: Trying private key: /home/mthompson/.ssh/id_ecdsa_sk
debug1: Trying private key: /home/mthompson/.ssh/id_ed25519
debug1: Trying private key: /home/mthompson/.ssh/id_ed25519_sk
debug1: Trying private key: /home/mthompson/.ssh/id_xmss
debug1: Next authentication method: password
[email protected]'s password:  

我把我的 id_rsa.pub 粘贴到服务器的 authorized_keys 文件中。但为什么不起作用?

答案1

SSH 对.ssh目录、authorized_keys文件和密钥都有安全要求。

  • 所有这些文件都应该只有用户才有写入权限。如果其他人有写入权限,ssh 会忽略它们,因此全局.ssh可写权限意味着authorized_keys服务器会忽略该目录中的其他文件。
  • 私钥(在客户端上)应该只有用户可读,否则客户端将不会尝试使用它们进行身份验证。

相关内容