我尝试使用 ssh 密钥控制运行 git 服务器,但是没有用。就我个人的 git 使用情况而言,我可以毫无问题地设置 git 服务器并单独使用它。现在,为了使用 ssh 密钥来操作具有权限控制的 git 服务器(以便一些获得许可的人可以访问 git 服务器),我尝试了这种方法。
- 在机器 A (在
my.server.ip.addr
)上,我/home1/repos_test/nnn.git
使用帐户创建了一个存储库prjgit
。prjgit
在sudo
组中,我将目录的所有者和组更改nnn.git
为prjgit
。 - 我在机器B上创建了另一个帐户,并生成了ssh密钥并将其内容粘贴到机器A的帐户文件中。
ssh-keygen -C "[email protected]"
id_rsa.pub
prjgit
.ssh/authorized_keys
但是当我尝试通过 git pull 时,它要求我输入密码,而我进入 git pull 的唯一方法是输入 的“帐户”密码。这不是我想要的。我希望 mike 无需密码即可进入,或者使用 自己的密码进入。我做错了什么?git pull ssh://[email protected]/home1/repos_test/nnn.git
[email protected]'s password:
prjgit
mike
添加
根据@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
服务器会忽略该目录中的其他文件。 - 私钥(在客户端上)应该只有用户可读,否则客户端将不会尝试使用它们进行身份验证。