Github、Gitlab、Gitosis等是如何实现的。。知道哪个用户已登录?

Github、Gitlab、Gitosis等是如何实现的。。知道哪个用户已登录?,git,github,ssh,gitlab,gitosis,Git,Github,Ssh,Gitlab,Gitosis,我问自己,那些git托管工具/站点如何知道哪个用户登录 我的意思是,你通过SSHgit@github.com/… 这意味着您以用户git 唯一能安全地将您识别为真正用户的信息是您的公钥。 但是他们如何计算出你的登录公钥呢 一种方法是查看此问题中显示的日志文件: 我可以找出哪个ssh密钥用于访问帐户吗? 但这意味着您必须将日志级别设置为VERBOSE,但我有一个Gitlab安装,日志级别为INFO,并且没有覆盖sshd_配置的任何地方 简而言之:如果您通过SSH登录Github或gitlab 它

我问自己,那些git托管工具/站点如何知道哪个用户登录

我的意思是,你通过SSH
git@github.com/…
这意味着您以用户
git

唯一能安全地将您识别为真正用户的信息是您的公钥。 但是他们如何计算出你的登录公钥呢

一种方法是查看此问题中显示的日志文件:

我可以找出哪个ssh密钥用于访问帐户吗?

但这意味着您必须将日志级别设置为VERBOSE,但我有一个Gitlab安装,日志级别为INFO,并且没有覆盖sshd_配置的任何地方

简而言之:如果您通过SSH登录Github或gitlab 它告诉你:

sshgit@github.com 通道0上的PTY分配请求失败

嗨,用户名!您已成功通过身份验证,但GitHub不提供shell访问

与github.com的连接已关闭

但当我以git身份登录时,github如何知道我是用户名

编辑:

我知道我的密钥和我的帐户之间存在映射,但gitolite(或(例如)gitolite shell必须知道我的公钥, 这把钥匙是怎么送到gitolite shell的


它必须找出会话中使用的ssh公钥,这是我的问题的关键,它如何知道哪个ssh密钥用于登录?它知道是因为您的ssh密钥,但在提交中,用户名用于本地git配置。因此,一个密钥的所有提交都将分配给您的帐户,但名称出现在com中MIT可以是任何东西

您的密钥在github服务器上添加到git user。ssh然后在push hook上检查真实github用户的密钥

关于gitolite(它取代了过时的gitosis),它知道您是谁,因为您在gitolite服务器
~git/.ssh/authorized_keys
文件中注册了您的id和您的公共ssh ket

见“”

该文件包含以下行:

command="[path]/gitolite-shell sitaram",[more options] ssh-rsa AAAAB3Nt...
这意味着ssh会话将使用表示您的id的参数调用GitoliteShell

这与提交时使用的
config user.name
无关。
它与您正在使用的身份验证机制(https或ssh)有关,然后通过一个


GitHub有自己的授权层(不同于gitolite),但想法是一样的(登录与ssh公钥相关联)。

好的,我在您的帖子的帮助下解决了这个问题:

GitoliteShell(可能与gitlab中的类似方式)知道我是哪个用户,因为SSH-Force命令

因此,您可以定义登录后执行的命令,具体取决于您的公钥

正是VonC所说的,但对我来说不够清楚:D

command=“[path]/gitolite shell sitaram”,[more options]ssh rsa AAAAB3Nt

这一行意味着,如果用户使用特定的SSH密钥登录,则使用参数sitaram调用gitolite shell
SSH rsa AAAAB3Nt..

我查看了gitlab安装中的授权密钥,瞧:
command=“/home/git/gitlab shell/bin/gitlab shell key-1”,无端口转发,无X11转发,无代理转发,无pty ssh dss AAAAB3Nz…

@cIph3r您的问题是“当我以git身份登录时,github知道我是用户名吗?”我的答案是正确的。如果您有登录名,您将在
~git/.ssh/authorized_keys
中找到公共ssh密钥(在注册相同登录名的行中)这篇文章回答了这个问题,但是我再次回答了我的问题,总结并扩展了给我答案的部分是的,但我总结了我想要的部分:D谢谢你的回答和链接,部队司令部很酷,我以前不知道这是一个简单的问题,但很难找到解释互联网上的任何其他国家!