結(jié)對(duì)編程利器:SSH和Tmux
大部分的結(jié)對(duì)編程和遠(yuǎn)程辦公的人對(duì)SSH和Tmux的組合并不陌生,網(wǎng)上也有很多好的文章,這里我來(lái)為大家介紹一個(gè)簡(jiǎn)單的解決方案。
創(chuàng)建一個(gè)賬戶(hù)別名(Alias)
***步是為你的主要用戶(hù)賬戶(hù)創(chuàng)建一個(gè)別名。這一步是可選的,選了這一步你就不必去了解每個(gè)開(kāi)發(fā)者的實(shí)際用戶(hù)名了。
從系統(tǒng)偏好設(shè)置中的“用戶(hù)&群組”面板中,右擊你的用戶(hù)賬戶(hù),然后點(diǎn)擊高級(jí)選項(xiàng)。
從高級(jí)選項(xiàng)面板中,添加一個(gè)別名來(lái)讓你的小伙伴們連接你的電腦時(shí)用。
配置SSH
接下來(lái)我們從系統(tǒng)偏好設(shè)置中的共享面板中打開(kāi)遠(yuǎn)程登錄。
然后更新我們的SSH登錄設(shè)置來(lái)關(guān)掉密碼驗(yàn)證,只允許公共密鑰(public-key)驗(yàn)證。
- # /etc/sshd_config
- PasswordAuthentication no
- ...
- ChallengeResponseAuthentication no
注意:為了時(shí)上面的設(shè)置生效,你需要重啟sshd。在Mac上,只需要在系統(tǒng)偏好設(shè)置中的共享面板中重置一下遠(yuǎn)程登錄的選中狀態(tài)就可以了。
設(shè)置遠(yuǎn)程用戶(hù)
因?yàn)槲覀儗SH配置成了只允許公共密鑰驗(yàn)證,我們需要將小伙伴們的公共密鑰添加到驗(yàn)證密鑰(authorized_keys)文件中。
- > cat pair_rsa.pub >> ~/.ssh/authorized_keys
接下來(lái)我們需要編輯這個(gè)文件來(lái)保證任何連接我們電腦的用戶(hù)都會(huì)被自動(dòng)添加到我們的Tmux會(huì)話(huà)(session)中。
- # ~/.ssh/authorized_keys
- command="/usr/local/bin/tmux attach -t pair" ABCDEFGHIJKLMNOPQRSTUVXYZ pair@user.com
這樣一來(lái),任何通過(guò)SSH連接的人都會(huì)被添加到以pair為別名的tmux繪畫(huà)中。
創(chuàng)建pair會(huì)話(huà)
1.創(chuàng)建一個(gè)以pair命名的tmux會(huì)話(huà)。
- > tmux new-session -s pair
2.創(chuàng)建你電腦中的pair SSH
- > ssh pair@hostname
3.優(yōu)點(diǎn)
這樣設(shè)置完,只有你的電腦中存在一個(gè)名為pair的tmux會(huì)話(huà)時(shí)別人才可以連接到你的電腦。你關(guān)閉名為pair的tmux會(huì)話(huà)時(shí)已經(jīng)存在的連接會(huì)自動(dòng)斷開(kāi)。另一個(gè)好處是當(dāng)你的私人密鑰被使用時(shí)你會(huì)被提示輸入密碼,這樣可以提防那些居心不良的小伙伴。
福利
為了方便完成以上的步驟,我寫(xiě)了一個(gè)shell腳本。不過(guò)你需要將”GitHub-auth”改為你的pair對(duì)應(yīng)在github上的用戶(hù)名。
免責(zé)聲明:代碼中用到了sudo,自己注意
- #!/bin/sh
- # create an account alias
- sudo dscl . -append /Users/$USER RecordName Pair pair
- # configure sshd to only allow public-key authentication
- sudo sed -E -i.bak 's/^#?(PasswordAuthentication|ChallengeResponseAuthentication).*$/\1 no/' /etc/sshd_config
- # add pair user public key(s)
- touch ~/.ssh/authorized_keys
- gh-auth add --users githubuser --command="$( which tmux ) attach -t pair"