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