ssh 命令我们经常用到,针对它的配置可能却很少研究,小到提交代码,大到连接远程服务器,ssh命令对于一个后端攻城狮而言就像家常便饭。什么,提交代码也会和ssh打交道,那么,请你听我慢慢道来,一般的,在公司完全可能自己搭建git服务器,我就是这样做的,但是外网无法访问内网啊?但你可以选择tcp穿透啊,至于如何tcp穿透,请看我写的这篇文章:frpc - 用于内网穿透的高性能反向代理应用
接上面的话题,提交代码的时候,如果你用了ssh协议,而git服务器的端口不是默认的22,你就需要单独配置了,好了,我们进入主题,不打岔了。下面我以给我一台服务器,我要针对ssh做哪些修改为主线,讲述 ssh 命令你可能不曾知道但很有用的技巧。
首先,我们需要远程连接到服务器,这个非常简单,ssh root@xxx.xxx.xxx.xxx 即可,登录后,我要做的第一件事是修改默认的端口,或者,我不会选择先登录,而是选择先copy id,即先设置免密码登录,然后再登录并进行安全相关的设置。免密码登录可用如下密码:ssh-copy-id root@xxx.xxx.xxx.xxx 会提示输入密码,输入后就完成了免密码登录,非常简单。接着ssh root@xxx.xxx.xxx.xxx,登录服务器后,我首先修改默认的端口,并禁止密码登录。vim /etc/ssh/sshd_config 将Port 前面的注释去掉,并修改为自己喜欢的数字,比如1314等等,并添加 PasswordAuthentication no 即禁止密码登录,接着保存文件并重启ssh服务,systemctl restart sshd 即可,然后打开一个新的终端尝试连接到服务器 ssh root@xxx.xxx.xxx.xxx -p 1314 记得这里将1314改为你之前修改的数字,怎么样,可以登录吧。但每次都这样很烦哎,尤其是端口号随便写的时候,这就回到了我一开始讲的,git 提交代码都和 ssh 配置有关。即使你不嫌弃麻烦,那么scp 呢,它不支持 -p 哦,我们可以通过 vim ~/.ssh/config 来配置 ssh 具体内容如下:
Host xxx.xxx.xxx.xxx Port 1314 User root
这里,我们配置了主机位xxx.xxx.xxx.xxx的信息,你可以用域名也可以用ip,它的端口号是1314,默认用户root,保存后,你就可以通过 ssh xxx.xxx.xxx.xxx来连接了,当然,你也可以设置alias,设置后可以通过类似 blog、ssyer等的命令连接到你的服务器了,怎么样是不是很炫酷?问题并没有完美,你连接到服务器后会发现过一会就会给你断开,很烦人啊,有没有解决办法?有,你可以修改/etc/ssh/ssh_config文件,不过是本地的哦,千万不要改服务端,同样的,上面的 ~/.ssh/config 文件也是本地的哦,只有修改默认端口并禁止密码登录是在服务端操作的啦。接下来我们编辑本地的/etc/ssh/ssh_config文件,本地的哦!在文件的后面追加:
ServerAliveInterval 30 ServerAliveCountMax 120
这里,30 指每隔30秒给服务端发送一个报以保持连接,而后面的120指总共发送120次!那么就是1个小时了,也不要设置太大啦,适当就好。
怎么样,看起来并不那么高大上,但是却很有实用,最后,考你一下,如果要通过socks5 与github连接,比如提交代码、拉取代码等,你要怎么做?其实也是配置 ~/.ssh/config 内容如下:
Host github.com ProxyCommand nc -X 5 -x 127.0.0.1:1080 %h %
这里,nc 是一个软件包,你可能需要手动安装它,ArchLinux 请安装 gnu-netcat