亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

像海泡石這樣的程序是如何工作的?

像海泡石這樣的程序是如何工作的?

像海泡石這樣的程序是如何工作的?我很好奇像gitellite這樣的程序是如何工作的-特別是它們如何與SSH協議交互,從而提供量身定制的體驗。有人能給我舉個例子,說明我如何完成以下這些任務,以及在哪里可以了解到更多關于這個主題的知識?→ ssh [email protected] PTY allocation request failed on channel 0 Hi <username>! You've successfully authenticated, but GitHub does not provide shell access. Connection to github.com closed.一個附帶的問題:我的主要語言是JavaScript。有可能用NodeJS實現我想要的嗎?
查看完整描述

3 回答

?
一只斗牛犬

TA貢獻1784條經驗 獲得超2個贊

海泡石本身就是一種授權層,它不需要ssh。
它只需要知道正在調用它,以便授權或不授權該人執行git命令。

SSH用于身份驗證(但您也可以使用http Apache進行身份驗證)

海泡石由ssh命名的方式在“海泡石和石英石“,并使用ssh機制。強制命令:


這個~/.ssh/authorized_keys(在gitite ssh服務器上)如下所示:

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

首先,它會發現該文件中的哪個公鑰與傳入的登錄名匹配。一旦找到火柴,它將運行該行上的命令。例如,如果我登錄,它就會運行[path]/gitolite-shell sitaram.
所以首先要注意的是,這樣的用戶沒有獲得“shell訪問”,這是很好的!

(強制命令=沒有交互式shell會話*它只會提供一個限制殼,只執行一個腳本,始終相同)

但是,在運行命令之前,sshd設置一個環境變量,稱為SSH_ORIGINAL_COMMAND,其中包含實際的git您的工作站發出的命令。
如果您沒有command=在授權的密鑰文件中。

什么時候gitolite-shell獲取控件時,它將查看第一個參數(“sitaram", "usertwo“,等等)以確定您是誰。然后查看SSH_ORIGINAL_COMMAND變量來查找要訪問的存儲庫,以及您是在讀還是寫。

現在它已經請求的用戶、存儲庫和訪問(讀/寫),gitite查看其配置文件,并允許或拒絕請求。

事實上authorized_keys調用Perl腳本(gitolite-shell)是因為Gitite是用Perl編寫的。
它很可能調用javascript程序。


如果您在GitHub上的ssh沒有任何命令,您就會收到一條問候語,就像您在問題中提到的那樣。
Gitite顯示類似的消息,詳見print_version()的功能info命令腳本:

sub print_version {
    chomp( my $hn = `hostname -s 2>/dev/null || hostname` );
    my $gv = substr( `git --version`, 12 );
    $ENV{GL_USER} or _die "GL_USER not set";
    print "hello $ENV{GL_USER}, this is " . ($ENV{USER} || "httpd") . "\@$hn running gitolite3 " . version() . " on git $gv\n";
}

這條信息看起來是:

hello admin, this is git@server running gitolite3 v3.0-12-ge0ed141 on git 1.7.3.4


查看完整回答
反對 回復 2019-06-24
?
MYYA

TA貢獻1868條經驗 獲得超4個贊

請注意,sshd對~/.ssh/Authorted_Key文件進行線性掃描。一旦你在里面得到了大約3000個密鑰,那些密鑰出現在文件后面的人就會開始注意到延遲-它開始超過網絡延遲:-)

這就是為什么GitHub有自己的SSHD補丁版本的原因之一。他們有太多的用戶能夠管理正常的SSHD!


查看完整回答
反對 回復 2019-06-24
?
縹緲止盈

TA貢獻2041條經驗 獲得超4個贊

基本步驟是:

  1. 檢查試圖登錄的人的公鑰
  2. 將公鑰映射到訪問控制列表。

換句話說,要使這些事情起作用,您必須從用戶那里獲取公鑰,然后生成一個列表(文件、數據庫等),該列表將密鑰與用戶和權限配對。


查看完整回答
反對 回復 2019-06-24
  • 3 回答
  • 0 關注
  • 614 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號