1

我正试图让 gitolite 工作并且已经被困了几个小时。我的局域网上的 CentOS 6 服务器。

我终于开始ssh -vvv gitolite使用这个配置文件了

Host gitolite
 User gitolite
 HostName srv
 Port 2002
 IdentityFile ~/.ssh/srv_gitolite_openssh

它仅在我在服务器上执行此操作以进行调试时才有效

sudo service sshd stop
sudo /usr/sbin/sshd -Dd

当 sshd 作为服务运行时,连接失败。

http://pastebin.com/UHVS1sSK

为什么当我手动运行 sshd 时它可以工作,但不能将 sshd 作为服务?它似乎使用相同的sshd_config文件,因为它使用相同的端口号。另外,我的用户名gitoliteAllowUsers配置的一部分。

成功案例如下所示:

http://pastebin.com/x4TcrG4R

更新:这是服务器端日志

作为服务失败:http: //pastebin.com/Xce2k2x5

成功: http: //pastebin.com/jYgiDhEm

失败案例的亮点如下。两种情况下的“key_from_blob”不应该相同吗?我已经尝试删除 authorized_keys 的命令部分,但它仍然作为服务失败。

debug3: mm_answer_keyallowed entering
debug3: mm_answer_keyallowed: key_from_blob: 0x7f72b6e93350
debug1: temporarily_use_uid: 505/505 (e=0/0)
debug1: trying public key file /var/lib/gitolite/.ssh/authorized_keys
debug1: restore_uid: 0/0
debug1: temporarily_use_uid: 505/505 (e=0/0)
debug1: trying public key file /var/lib/gitolite/.ssh/authorized_keys2
debug1: restore_uid: 0/0
Failed publickey for gitolite from 192.168.1.201 port 57488 ssh2
debug3: mm_answer_keyallowed: key 0x7f72b6e93350 is not allowed
debug3: mm_request_send entering: type 22

成功案例的亮点:

debug3: mm_answer_keyallowed entering
debug3: mm_answer_keyallowed: key_from_blob: 0x7f4d79de18b0
debug1: temporarily_use_uid: 505/505 (e=0/0)
debug1: trying public key file /var/lib/gitolite/.ssh/authorized_keys
debug1: fd 4 clearing O_NONBLOCK
debug3: secure_filename: checking '/var/lib/gitolite/.ssh'
debug3: secure_filename: checking '/var/lib/gitolite'
debug3: secure_filename: terminating check at '/var/lib/gitolite'
debug2: key_type_from_name: unknown key type 'command="/var/lib/gitolite/bin/gitolite-shell'
debug3: key_read: missing keytype
debug2: user_key_allowed: check options: 'command="/var/lib/gitolite/bin/gitolite-shell gitolite",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIBrEOo5blAUXXSwXdxUxTOhBDHcjw2OzxGg6Vu4drzmUYL5uPxjWLGzuzcNkrYmlVqXr5UBqeSbkZh9W/0lLMcmiv5FLdIQ+J2m5lqHsEJLS8FImfJxfo2/LvboFy0NFOxF8GaHxeIWFp+YmwAlogO9gi1zgXK99DGc15W/edYwCw==
'
debug1: matching key found: file /var/lib/gitolite/.ssh/authorized_keys, line 2
Found matching RSA key: ae:92:1d:a7:7b:ec:75:7a:19:ac:28:75:b0:cc:27:8f
debug1: restore_uid: 0/0
debug3: mm_answer_keyallowed: key 0x7f4d79de18b0 is allowed
4

1 回答 1

1

我怀疑密钥在这两种情况下都有效。

但是sshd作为服务运行不同于从当前会话运行它:请参阅“为什么我要使用“<code>service sshd reload”而不是“<code>service sshd restart”? ”。

服务取消所有继承的环境变量,只保留PATHTERM

Gitolite 使用在中注册的强制命令~gitolite/.ssh/authorized_keys,并且必须缺少一个环境变量(当 sshd 作为服务运行时),这会阻止命令的执行。


有一个类似的情况,“只有当 sshd 是守护进程时,公钥认证才会失败”:

SELinux 可能是原因。
目录可能被.ssh贴错标签。

/var/log/audit/audit.log。它应该被标记ssh_home_t
检查ls -laZ. Run restorecon -r -vv /root/.ssh是否需要。

于 2013-09-25T08:05:08.213 回答