W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
現(xiàn)在我們過一邊服務(wù)器端架設(shè) SSH 訪問的流程。本例將使用 authorized_keys 方法來給用戶授權(quán)。我們還將假定使用類似 Ubuntu 這樣的標(biāo)準(zhǔn) Linux 發(fā)行版。首先,創(chuàng)建一個(gè)名為 'git' 的用戶,并為其創(chuàng)建一個(gè) .ssh
目錄。
$ sudo adduser git
$ su git
$ cd
$ mkdir .ssh
接下來,把開發(fā)者的 SSH 公鑰添加到這個(gè)用戶的 authorized_keys 文件中。假設(shè)你通過電郵收到了幾個(gè)公鑰并存到了臨時(shí)文件里。重復(fù)一下,公鑰大致看起來是這個(gè)樣子:
$ cat /tmp/id_rsa.john.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCB007n/ww+ouN4gSLKssMxXnBOvf9LGt4L
ojG6rs6hPB09j9R/T17/x4lhJA0F3FR1rP6kYBRsWj2aThGw6HXLm9/5zytK6Ztg3RPKK+4k
Yjh6541NYsnEAZuXz0jTTyAUfrtU3Z5E003C4oxOj6H0rfIF1kKI9MAQLMdpGW1GYEIgS9Ez
Sdfd8AcCIicTDWbqLAcU4UpkaX8KyGlLwsNuuGztobF8m72ALC/nLF6JLtPofwFBlgc+myiv
O7TCUSBdLQlgMVOFq1I2uPWQOkOWQAHukEOmfjy2jctxSDBQ220ymjaNsHT4kgtZg2AYYgPq
dAv8JggJICUvax2T9va5 gsg-keypair
只要把它們逐個(gè)追加到 authorized_keys 文件尾部即可:
$ cat /tmp/id_rsa.john.pub >> ~/.ssh/authorized_keys
$ cat /tmp/id_rsa.josie.pub >> ~/.ssh/authorized_keys
$ cat /tmp/id_rsa.jessica.pub >> ~/.ssh/authorized_keys
現(xiàn)在可以用 --bare
選項(xiàng)運(yùn)行 git init
來建立一個(gè)裸倉庫,這會(huì)初始化一個(gè)不包含工作目錄的倉庫。
$ cd /opt/git
$ mkdir project.git
$ cd project.git
$ git --bare init
這時(shí),Join,Josie 或者 Jessica 就可以把它加為遠(yuǎn)程倉庫,推送一個(gè)分支,從而把第一個(gè)版本的項(xiàng)目文件上傳到倉庫里了。值得注意的是,每次添加一個(gè)新項(xiàng)目都需要通過 shell 登入主機(jī)并創(chuàng)建一個(gè)裸倉庫目錄。我們不妨以 gitserver 作為 git 用戶及項(xiàng)目倉庫所在的主機(jī)名。如果在網(wǎng)絡(luò)內(nèi)部運(yùn)行該主機(jī),并在 DNS 中設(shè)定 gitserver 指向該主機(jī),那么以下這些命令都是可用的:
#在 John 的電腦上
$ cd myproject
$ git init
$ git add .
$ git commit -m 'initial commit'
$ git remote add origin git@gitserver:/opt/git/project.git
$ git push origin master
這樣,其他人的克隆和推送也一樣變得很簡單:
$ git clone git@gitserver:/opt/git/project.git
$ cd project
$ vim README
$ git commit -am 'fix for the README file'
$ git push origin master
用這個(gè)方法可以很快捷地為少數(shù)幾個(gè)開發(fā)者架設(shè)一個(gè)可讀寫的 Git 服務(wù)。
作為一個(gè)額外的防范措施,你可以用 Git 自帶的 git-shell
工具限制 git 用戶的活動(dòng)范圍。只要把它設(shè)為 git 用戶登入的 shell,那么該用戶就無法使用普通的 bash 或者 csh 什么的 shell 程序。編輯/etc/passwd
文件:
$ sudo vim /etc/passwd
在文件末尾,你應(yīng)該能找到類似這樣的行:
git:x:1000:1000::/home/git:/bin/sh
把 bin/sh
改為 /usr/bin/git-shell
(或者用 which git-shell
查看它的實(shí)際安裝路徑)。該行修改后的樣子如下:
git:x:1000:1000::/home/git:/usr/bin/git-shell
現(xiàn)在 git 用戶只能用 SSH 連接來推送和獲取 Git 倉庫,而不能直接使用主機(jī) shell。嘗試普通 SSH 登錄的話,會(huì)看到下面這樣的拒絕信息:
$ ssh git@gitserver
fatal: What do you think I am? A shell?
Connection to gitserver closed.
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: