今天遇到將Linux配置成GitHub服務器,用遠程登錄訪問服務器clone/push工程。記錄SSH的學習。
Linux CentOS安裝SSH
- Linux安裝
[CentOS] yum install ssh
[ubuntu] sudo apt-get install ssh
- 登錄Linux系統,打開terminal
[CentOS]rpm -qa | grep ssh
3.開啓/關閉SSH服務,SSH服務一般叫做SSHD
service sshd start
service sshd restart
service sshd stop
- 查看是否啓動22號端口
netstat -antp | grep sshd
- 設置SSH服務爲開機啓動
chkconfig sshd on
用本機連接Linux服務器
- 無參數運行ssh
xiejiangqiongdeMacBook-Pro:~ cc$SSH 192.168.232.150
- 默認情況ssh會嘗試用當前用戶作爲當前用戶名來連接,上面這個用使用cc來登錄192.168.232.150的Linux機器,但是如果服務器上沒有cc這個用戶,就沒法登了呀(這也是我不管嘗試我的什麼密碼都登不上去的原因)
- 指定ssh的登錄用戶
ssh -l root 192.168.232.150
ssh root@192.168.232.150
輸入服務器root的密碼就可以登錄了。
修改SSH默認端口22的操作和對數據壓縮傳送的操作
搭建Git服務器
- 安裝
git
yum install git
- 創建git用戶,設置用戶密碼
sudo adduser git
passwd git
- 初始化Git倉庫
mkdir /srv/sample.git
sudo git init --bare sample.git
其實這樣就可以在本機上將工程remote到Linux服務器上了
當前目錄下生成sample的文件夾就是從服務器上clone的工程,之後就跟在GitHub上託管是一樣的了。
作爲GitHub託管服務器的設置
創建證書登錄
收集所有需要登錄的用戶的公鑰,本機上的id_rsa.pub
把所有公鑰導入到/home/git/.ssh/authorized_keys
文件裏-在Linux系統上安裝git指令,默認創建了/home/git
ls -a
並沒有發現
.ssh
文件呀
他孃的,我真奔潰,那就把本機的id_rsa.pub
放到找到的第二行的那個文件裏吧,好像也沒啥作用,呵呵噠,那就在/home/git
裏創建一個.ssh
文件夾在touch authorized_keys
放進去吧
恩,可以的,效果就是用git用戶克隆,不需要輸入git用戶連接服務器的密碼。所以之前的密碼設置那一步可以不需要。ssh git@192.168.232.150
也不需要輸入密碼了。這個倒挺奇怪的。
禁用shell登錄
爲啥要這樣做呢ssh git@192.168.232.150
結果就是:
[git@hadoop1 ~]$
用這個用戶登錄的Linux服務器,這樣登了git用戶的人就可以任意修改/srv/sample這個文件了。
禁用shell登錄
vim /etc/passwd
git:x:500:500::/home/git:/bin/bash
改爲
git:x:500:500::/home/git:/usr/bin/git-shell
git
用戶可以正常通過ssh使用git,但無法登錄shell,這句是爲git
用戶指定的git-shell
每次已登錄就自動退出。
- Git倉庫純粹是爲了共享,所以不讓用戶直接登錄到服務器上去修改工作區,並且服務器上的Git倉庫通常都已
.git
結尾,把owner改爲git
sudo chown -R git:git sample.git
總結
- 搭建Git服務器和本機連接服務器的方法,挺清楚的了把
- 方便管理公鑰和控制權限用Gitosis
- 將mac的遠程連接關掉,還是可以連接用ssh指令連接服務器的,可能關掉不允許別的機器連我的機器吧。算是一個認知的糾正。
通過搭建我的Git服務器,學習了一下ssh和複習了一下Linux命令
- netstat -antp | grep ssh
- ifconfig
- rmdir 刪除一個目錄
挺小的知識,熟能生巧,經常複習,望早日變得厲害~