2013-08-03 92 views
4

我問自己,怎麼做那些混帳託管工具/網站知道哪些用戶已登錄。Github,Gitlab,Gitosis等知道哪些用戶已登錄?

我的意思是,你通過SSH [email protected]/... 登錄,這意味着你登錄爲用戶git

,唯一的安全地將您標識爲真實用戶的信息就是您的公鑰。 但他們如何找出您的登錄公鑰?

單程這樣做是爲了看看在這個問題上所示的日誌文件:

我可以找出哪些SSH密鑰被用來訪問帳戶? https://unix.stackexchange.com/questions/15575/can-i-find-out-which-ssh-key-was-used-to-access-an-account

但是這意味着你必須建立日誌級別到詳細,但我有一個Gitlab安裝和日誌級別爲INFO,並沒有壓倒一切的sshd_config的任何地方..

因此,在短期再次:如果您在登錄或Github上通過SSH gitlab 它告訴你:

SSH [email protected] PTY分配請求信道失敗0

嗨用戶名!您已成功通過身份驗證,但GitHub不提供shell訪問權限。

與github.com的連接已關閉。

但是當我以git身份登錄時,github如何知道我是USERNAME?

編輯:

我知道有我的鑰匙,我的帳戶,但gitolite(或(例如)在gitolite殼必須以某種方式知道我的公鑰, 這是怎麼鍵發送到腳趾之間的映射gitolite的殼呢?

它在某種程度上已發現,在本次會議中使用的SSH公共密鑰,這是關鍵,我的問題,它怎麼知道哪個SSH密鑰是用來登錄

+0

這是一個簡單的問題,但它是令人驚訝的很難找到對互聯網絡的解釋任何地方! –

回答

4

關於gitolite(它取代過時的gitosis),它知道你是誰,因爲您註冊id和gitolite服務器~git/.ssh/authorized_keys文件中的公共ssh ket一起使用。

請參閱「How do programs like gitolite work?」。

該文件包含線,如:

command="[path]/gitolite-shell sitaram",[more options] ssh-rsa AAAAB3Nt... 

這意味着SSH會話將調用gitolite-shell與代表你的ID的參數。

這與您用於提交的config user.name無關。
它與您正在使用的(https或ssh)的認證機制有關,然後沿着authorization layer like gitolite傳遞。

GitHub有自己的授權層(不同於gitolite),但想法是一樣的(登錄與ssh公鑰關聯)。

+0

@ cIph3r你的問題是「當我以git登錄時,github知道我是USERNAME?」我的答案是立場。如果你有登錄,你可以在'〜git/.ssh/authorized_keys'(在同一登錄註冊的行)找到公共ssh密鑰 – VonC

+0

這篇文章回答了這個問題,但是我再次回答了我的問題以總結並擴展給我答案 – cIph3r

1

它知道是因爲你的SSH密鑰,但是在提交USERNAME的時候是爲了你的本地git配置,所以所有來自一個密鑰的提交都是分配給你的帳戶,但提交的名稱可以是任何東西。

你的關鍵是GitHub的服務器上添加的git用戶的.ssh然後推鉤它檢查鑰匙真實的github用戶

1

好吧,我想通了你的帖子的幫助:

的gitolite殼(並可能在gitlab類似的方式)知道我是因爲SSH隊的哪個用戶命令

所以您可以定義在登錄取決於你的公鑰

正是VonC說,但不能指出明確的足以讓我以後執行的命令:d

命令= 「[路徑]/gitolite殼sitaram」,[更多選項]的ssh-RSA AAAAB3Nt ..

這行表示,調用gitolite - 殼與參數sitaram IF用戶登錄與一個特定的SSH密鑰ssh-rsa AAAAB3Nt..

,我看着在authorized_keys裏我gitlab安裝,瞧: command="/home/git/gitlab-shell/bin/gitlab-shell key-1",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-dss AAAAB3Nz...

+0

+1的部分。我的確切點。 – VonC

+0

是的,但我總結了我正在尋找的部分:D 感謝您的答案和鏈接,力量命令它非常酷,我以前不知道它 – cIph3r

相關問題