前言
在日常开发和排查问题时,在需要频繁或者长时间通过ssh协议登陆服务器时,经常会遇到连接超时或者需要重复输入密码的情况。现在已经有很多工具都能很好的帮助解决这些问题,比如xshell、sercure CRT等。在需要管理服务器较多,或者需要其他功能比如跳板机设置,使用这些工具都会比较得心应手。缺点也有,那就是商业版要money,但是好用也是真的。
作为标准白嫖党,如果尝试利用好手中现有的工具实现基本的功能也不失为一个好方法。毕竟我们平时其实也只会使用到一些比较基本的功能。
OpenSSH介绍
OpenSSH1(OpenBSD Secure Shell)是使用SSH透过计算机网络加密通信的实现。它是取代由SSH Communications Security所提供的商用版本的开放源代码方案2。
ssh
OpenSSH 远程登录客户端3
ssh还可以从每个用户的配置文件和系统范围的配置文件中获取配置数据。文件格式和配置选项有以下三个来源4。
- 命令行选项
- 用户的配置文件(~/.ssh/config)
- 系统范围的配置文件(/etc/ssh/ssh_config)
可以简单理解sshd是客户端。
sshd
OpenSSH 守护进程5
sshd 可以使用命令行选项或配置文件进行配置(默认情况下/etc/ssh/sshd_config); 命令行选项会覆盖配置文件中指定的值。6
可以简单理解sshd是服务端。
免密登陆方案
基于公钥
文件 ~/.ssh/authorized_keys列出允许登录的公钥。当用户登录时, ssh程序会告诉服务器它想使用哪个密钥对进行身份验证。客户端证明它可以访问私钥,服务器检查相应的公钥是否有权接受该帐户7。
简单来说就是把客户端的公钥配置在服务端的authorized_keys文件中,这样客户端登陆时可以直接对比公钥认证不需要进行密码认证了。
案例
获取客户端公钥
客户端公钥地址是~/.ssh/id_rsa.pub
将公钥存放至服务端authorized_keys文件
这里是使用vim工具进行文本编辑的。
尝试连接
基于多路复用
多路复用通常表示在一个信道上传输多路信号或数据流的过程和技术8。OpenSSH 客户端支持多路复用其传出连接,使用在ssh_config中定义的ControlMaster、ControlPath和ControlPersist配置指令。客户端配置文件通常默认为~/.ssh/config位置9。
具体的指令详解参考ssh_config文档6。
案例
已知一台服务器和一台客户端。服务器地址192.168.0.1,账号密码分别是root,12345678。
设置客户端配置指令
- 打开用户级别的ssh配置文件
这里使用了vim命令,也可以直接使用编辑器打开config文件。
- 输入以下内容并保存文件
该配置对所有主机的连接有效。
Host * ControlMaster auto ControlPath ~/.ssh/%h-%p-%r ControlPersist yes
尝试连接
遮盖部分是ip地址或者敏感信息。
连续进行两次登陆,查看登陆效果
查看自动保存的会话文件
连接超时设置
设置客户端访问服务器超时时间
既然是设置客户端访问服务器的超时设置,那么只需要设置客户端配置文件即可,要求简单使用时可以直接设置系统范围的配置文件(/etc/ssh/ssh_config)。
推荐在用户级别配置文件(~/.ssh/config)
涉及两个参数ServerAliveCountMax、ServerAliveInterval具体参数详情可以查看ssh_config文件详解4。简单而言ServerAliveCountMax表示客户端在没有服务器发送消息回来时,自动发送消息的最大次数,默认三次。ServerAliveInterval表示客户端在服务器没有发送消息回来时,多久会超时,单位时秒默认15秒。每次超时之后客户端会自动发送消息到服务器,直到超过最大次数ServerAliveCountMax就会超时,所以平常我们使用时超时时间是3*15=45秒。
通常设置ServerAliveInterval为30或者60即可。
打开客户端配置文件
ssh_config(/etc/ssh/ssh_config),注意进行修改该文件时需要用root权限。需要使用sudo命令获取root权限。
输入超时参数
在Host标签下面输以下入参数
ServerAliveCountMax 20000
ServerAliveInterval 60
实例图
总结
通过这些简单的设置可以使自己也能体验到商业软件开箱即用的功能。但是在实际工作中的实用性和可行性不一定会好,特别是需要考虑权限和安全性的情况。而且工具的本质就是工具,建议该花钱的不要省,当然如果公司体谅并能为我等打工人负担一点就更好了(狗头),毕竟盗版用久了还是不得劲,而且白嫖盗版也不等于支持开源。