我正在尝试在 Debian 服务器上设置 Git 服务器,但似乎无法添加可以成功访问它的用户。
执行 gitosis-init、克隆 gitosis-admin 存储库并将本地计算机的公钥添加到 /keydir 并编辑 gitosis.conf 文件后,我提交并推送。正如许多教程告诉我的那样。
我已确认 gitosis-admin 存储库已通过将它克隆到另一个位置来正确更新,并且已进行更新。
gitosis.conf
[gitosis]
[group gitosis-admin]
writable = gitosis-admin
members = saifis@debian, saifis@local
现在,我尝试将 gitosis-admin 克隆到本地计算机上的一个文件中,它给出了
Permission denied (publickey).
错误。
ssh -v gitosis@DebianAddress 给我
OpenSSH_5.2p1, OpenSSL 0.9.8l 5 Nov 2009
debug1: Reading configuration data /etc/ssh_config
debug1: Connecting to 192.168.xxx.xxx [192.168.xxx.xxx] port 22.
debug1: Connection established.
debug1: identity file /Users/saifis/.ssh/identity type -1
debug1: identity file /Users/saifis/.ssh/id_rsa type 1
debug1: identity file /Users/saifis/.ssh/id_dsa type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.1p1 Debian-5
debug1: match: OpenSSH_5.1p1 Debian-5 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.2
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host '192.168.xxx.xxx' is known and matches the RSA host key.
debug1: Found key in /Users/saifis/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
-----------------
debug1: Trying private key: /Users/saifis/.ssh/identity
debug1: Trying private key: /Users/saifis/.ssh/id_dsa
debug1: No more authentication methods to try.
Permission denied (publickey).
我不认为这是一个与密钥相关的问题,因为相同的公钥用于通过 SSH 登录到同一台服务器,并且工作正常。
如果需要更多信息,请告诉我。
---已添加---- 关于 ~/gitosis/.ssh/authorized_keys。据我了解,由于授权的 git 用户通过 gitosis 帐户通过 SSH 访问,因此将公钥添加到 authorized_keys 听起来是正确的答案,但是在文件顶部,它有
### autogenerated by gitosis, DO NOT EDIT
并不是说我应该盲目地遵循它所说的一切,但是将公钥添加到authorized_keys将使所有添加的用户都可以通过ssh访问整个服务器,而我不想将那么多的控制权交给存储库用户。
我以为 gitosis 已经处理好了这个问题,并且只在通过 git 方法访问时才授予访问权限,而不是直接 ssh 访问,或者它们是否还是会被添加到 authorized_keys 中?
答案1
在您推送任何内容之前,唯一对 gitosis 帐户具有任何权限的密钥是您传递给 gitosis-init 的密钥。其他密钥是否有权访问您的常规用户帐户无关紧要。比较和中的~gitosis/.ssh/authorized_keys
密钥ssh-add -L
。
Gitosis 的工作方式如下:每次推送时,都会运行更新后挂钩,然后 gitosis 会为其自己的帐户重新生成 authorized_keys。如果它没有获取您的密钥,则很可能不是 gitosis 所期望的格式。由于挂钩是更新后挂钩,因此即使更新无效,也会被接受(gitosis 可以通过同时使用更新和更新后挂钩来更加严格)。进行微小更改并从具有初始密钥的主机再次推送以查看 gitosis 错误消息。手动将密钥添加到 authorized_keys 涉及复制正确的行,替换密钥类型、密钥数据和用户名。