大部分的結對程式設計和遠端辦公的人對SSH和Tmux的組合并不陌生,網上也有很多好的文章,這裡我來為大家介紹一個簡單的解決方案。
建立一個賬戶别名(Alias)
第一步是為你的主要使用者賬戶建立一個别名。這一步是可選的,選了這一步你就不必去了解每個開發者的實際使用者名了。
從系統偏好設定中的“使用者&群組”面闆中,右擊你的使用者賬戶,然後點選進階選項。
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5SY3kTOwADN2EGOiNDZyYTYzMDZ0IWN2EDM0I2Y4ImY28CX5d2bs92Yl1iclB3bsVmdlR2LcNWaw9CXt92Yu4GZjlGbh5yYjV3Lc9CX6MHc0RHaiojIsJye.png)
從進階選項面闆中,添加一個别名來讓你的小夥伴們連接配接你的電腦時用。
配置SSH
接下來我們從系統偏好設定中的共享面闆中打開遠端登入。
然後更新我們的SSH登入設定來關掉密碼驗證,隻允許公共密鑰(public-key)驗證。
# /etc/sshd_config
PasswordAuthentication no
...
ChallengeResponseAuthentication no
注意:為了時上面的設定生效,你需要重新開機sshd。在Mac上,隻需要在系統偏好設定中的共享面闆中重置一下遠端登入的選中狀态就可以了。
設定遠端使用者
因為我們将SSH配置成了隻允許公共密鑰驗證,我們需要将小夥伴們的公共密鑰添加到驗證密鑰(authorized_keys)檔案中。
> cat pair_rsa.pub >> ~/.ssh/authorized_keys
接下來我們需要編輯這個檔案來保證任何連接配接我們電腦的使用者都會被自動添加到我們的Tmux會話(session)中。
# ~/.ssh/authorized_keys
command="/usr/local/bin/tmux attach -t pair" ABCDEFGHIJKLMNOPQRSTUVXYZ [email protected]
這樣一來,任何通過SSH連接配接的人都會被添加到以pair為别名的tmux繪畫中。
建立pair會話
1.建立一個以pair命名的tmux會話。
> tmux new-session -s pair
2.建立你電腦中的pair SSH
> ssh pair@hostname
3.優點
這樣設定完,隻有你的電腦中存在一個名為pair的tmux會話時别人才可以連接配接到你的電腦。你關閉名為pair的tmux會話時已經存在的連接配接會自動斷開。另一個好處是當你的私人密鑰被使用時你會被提示輸入密碼,這樣可以提防那些居心不良的小夥伴。
福利
為了友善完成以上的步驟,我寫了一個shell腳本。不過你需要将”GitHub-auth”改為你的pair對應在github上的使用者名。
免責聲明:代碼中用到了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"