91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Git : SSH 協議服務器

發布時間:2020-07-06 13:04:01 來源:網絡 閱讀:380 作者:wudized 欄目:建站服務器

SSH協議語法格式

對于擁有 shell 登錄權限的用戶賬號,可以用下面的語法訪問 Git 版本庫:

語法 1 : ssh://[<username>@]<server>[:<port>]/home/xxx/repo1.git
語法 2 : [<username>@]<server>:/home/xxx/repo1.git

注意 : 
SSH 協議地址格式可以使用兩種不同的寫法,第一種是使用 ssh:// 開頭的標準的 SSH 協議 URL 寫法,第二種是 SCP 格式的寫法。SSH 協議標準的 URL 寫法稍嫌復雜,但是對于非標準 SSH 端口(非 22)可以直接在 URL 中給出端口號。
<username> 是服務器 <server> 上的用戶賬號,如果省略用戶名,則會使用當前登錄用戶的用戶名(配置和使用了主機別名的除外)。
<port> 為SSH 協議端口,默認為 22。當使用了非默認端口時,最好使用語法1。當然使用語法2也可以實現,但是要通過 ~/.ssh/config 配置文件設置主機別名。
路徑 /home/xxx/repo1.git 是服務器中版本庫的絕對路徑。若用相對路徑則是相對于 username 用戶的家目錄。
如果采用口令 認證,必須在每次連接時輸入口令。
如果采用公鑰認證,則不用輸入口令。

服務器架設方式比較

SSH 協議有兩種方式來實現 Git 服務。第一種是用標準的 SSH 賬號訪問版本庫。即用戶賬號可以直接登錄到服務器獲得 shell。對于這種使用標準 SSH 賬號的方式,直接使用標準的 SSH 服務就可以了。
第二種實現方式是所有用戶都使用同一個專用的 SSH 賬號訪問版本庫,訪問時通過公鑰認證的方式。雖然所有用戶用同一個賬號訪問,但可以通過在建立連接時所用的不同公鑰來區分不同的用戶身份。Gitolite 就是實現該方式的服務器軟件。
標準 SSH 賬號和專用 SSH 賬號這兩種實現方式的區別:


標準 SSHGitolite
賬號每個用戶一個賬號所有用戶公用同一個賬號
認證方式口令或公鑰認證公鑰認證
登錄到 shell
安全性
管理員需要 shell
版本庫路徑相對路徑或絕對路徑相對路徑
授權方式操作系統中用戶組和目錄權限通過配置文件授權
分支寫授權Gitolite
路徑寫授權Gitolite
假設難易度簡單復雜

實際上,標準 SSH 也可以用公鑰認證的方式實現使用用戶公用同一個賬號,不過這類似于把一個公共賬號的登錄口令同時告訴給多個人。具體操作如下:
1.    在服務器端創建一個公共賬號,例如 sparker。
2.    管理員收集需要訪問git服務的用戶公鑰。如 user1.pub,user2.pub。
3.    使用 ssh-copy-id 命令將各個 git 用戶的公鑰遠程加入服務器的公鑰認證列表中。
       3.1.     遠程操作,可以使用 ssh-copy-id 命令。
                 $ ssh-copy-id -i user1.pub sparker@server
                 $ ssh-copy-id -i user2.pub sparker@server
       3.2.     如果直接在服務器上操作,則直接將文件追加到 authorized_keys文件中。
                 $ cat user1.pub >> ~sparker/.ssh/authorized_keys
                 $ cat user2.pub >> ~sparker/.ssh/authorized_keys
4.    在服務器端的 sparker 用戶主目錄下建立 git 庫,就可以實現多個用戶利用同一個系統賬號(sparker)訪問 git 服務了。

這樣做除了不必逐一設置賬號,以及用戶無須口令認證之外,標準 SSH 部署 git 服務的缺點一個也不少,而且因為無法區分用戶,也就無法針對用戶進行授權。

SSH公鑰認證

為實現公鑰認證,作為認證的客戶端一方需要擁有兩個文件,即公鑰/私鑰對。一般情況下,公鑰/私鑰對文件創建在用戶家目錄下的 .ssh 目錄中。如果用戶家目錄中不存在 .ssh 目錄,說明 SSH 公鑰/私鑰對尚未創建。可以用下面的命令創建:

$ ssh-keygen

該命令會在用戶家目錄下創建 .ssh 目錄,并在其中創建兩個文件:
1.    id_rsa
私鑰文件,它是基于 RSA 算法創建的,一定要妥善保管不要泄露。
2.    id_rsa.pub
公鑰文件,和 id_rsa 文件是一對兒,該文件作為公鑰文件可以公開。
創建了自己的公鑰/私鑰對以后,就可以使用下面的命令,實現無口令登錄遠程服務器 (即用公鑰認證取代口令認證)。

$ ssh-copy-id -i .ssh/id_rsa.pub <user>@<server>

注意:
該命令會提示用戶輸入 user 在 server 上的 SSH 登錄口令。
此命令執行成功后,再以 user 用戶用 ssh 命令登錄 server 遠程主機時,不必輸入口令即可直接登錄。
該命令實際上是將 .ssh/id_rsa.pub 公鑰文件追加到遠程主機 serve r的 user 家目錄下的 .ssh/authorized_keys 文件中。
檢查公鑰認證是否生效,通過 ssh 命令連接遠程主機,正常的話應該直接登錄成功。如果要求輸入口令則表明公鑰認證配置存在問題。如果 SSH 登錄存在問題,可以通過查看服務器端的 /var/log/auth.log 文件進行診斷。

SSH主機別名

在實際使用中,有時需要使用多套公鑰/私鑰對,例如:
1.    使用默認的公鑰訪問服務器的 git 賬號,可以執行 git 命令,但不能進行 shell 登錄。
2.    使用特別創建的公鑰訪問服務器的 git 賬號,能夠獲取 shell,登錄后可以對 Git 服務器軟件進行升級、維護等操作。
3.    訪問 Github 使用其他公鑰(非默認公鑰)。

從上面的說明可以看出,用戶可能擁有不止一套公鑰/私鑰對。為了創建不同的公鑰/私鑰對,在使用 ssh-keygen 命令時就需要通過-f參數指定不同的私鑰名稱。具體用法如下:

$ ssh-keygen -f ~/.ssh/<filename>

請將 <filename> 替換為有意義的名稱。命令執行完畢后,會在 ~/.ssh 目錄下創建指定的公鑰/私鑰對:文件 <filename> 是私鑰,文件 <filename>.pub 是公鑰。

將新生成的公鑰添加到遠程主機登錄用戶家目錄下的 .ssh/authorized_keys 文件中,就可以使用新創建的公鑰建立到遠程主機 <server> 的 <user> 賬戶的無口令登錄。操作如下:

$ ssh-copy-id -i .ssh/<filename>.pub <user>@<server>

現在用戶存在多個公鑰/私鑰對,那么當執行下面的 ssh 登錄命令時,用到的是哪個公鑰呢?

$ ssh <user>@<server>

當然是默認公鑰 ~/.ssh/id_rsa.pub。那么如何用新建的公鑰連接 server 呢?
SSH 的客戶端配置文件 ~/.ssh/config可以通過創建主機別名,在連接主機時選擇使用特定的公鑰。例如 ~/.ssh/config 文件中的下列配置:

host abc
     user git
     hostname abc.xxx.com
     port 22
     Identityfile ~/.ssh/abc

注意,hostname 也可以寫成 IP。

然后執行下面的 SSH 登錄命令:

$ ssh abc

或者執行 git 命令:

$ git clone abc:/home/abc/repo1.git

雖然這兩條命令各不相同,但是都使用了 SSH 協議,以及相同的主機別名:abc。參考上面在 ~/.ssh/config 文件中建立的主機別名,可以做出如下判斷:
1.    登錄的SSH主機名為 abc.xxx.com。
2.    登錄時使用的用戶名為 git。
3.    認證時使用的公鑰文件為 ~/.ssh/abc.pub。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

台南县| 江永县| 东乡| 阿拉尔市| 车致| 沙雅县| 潞西市| 新干县| 阿瓦提县| 龙山县| 沙田区| 绥中县| 会理县| 塔城市| 巴彦淖尔市| 亚东县| 博乐市| 康保县| 博兴县| 东乡县| 昌江| 类乌齐县| 南涧| 荣昌县| 筠连县| 洛扎县| 通城县| 昔阳县| 香格里拉县| 嵊州市| 河东区| 绥宁县| 新巴尔虎左旗| 滨海县| 浪卡子县| 滁州市| 嵩明县| 临沭县| 三原县| 铁岭市| 长春市|