结对编程利器:SSH和Tmux
大部分的结对编程和远程办公的人对SSH和Tmux的组合并不陌生,网上也有很多好的文章,这里我来为大家介绍一个简单的解决方案。
创建一个账户别名(Alias)
第一步是为你的主要用户账户创建一个别名。这一步是可选的,选了这一步你就不必去了解每个开发者的实际用户名了。
从系统偏好设置中的“用户&群组”面板中,右击你的用户账户,然后点击高级选项。
从高级选项面板中,添加一个别名来让你的小伙伴们连接你的电脑时用。
配置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"