Dreamer2q Blog
见到,不如不见
Dreamer2q

Code is cheap, talk is expensive

64日志

Xshell 提升生产力的一些细节

创建于 2021-02-15 共 1922 字,阅读约 8 分钟 更新于 21-02-15 05:22
浏览 11评论 0

无论你用的是Windows或者Mac, 到最后都难免要接触到Linux。想当初面对着C语言黑黑的控制台,总是觉得不如漂亮美观的图像界面来的舒服。只不过经过了曲折的发展,最后还是回到了控制台,算是走了一圈又回来了吧。如果你是做后台相关的,那木Linux对你来说或许是轻车熟路了。


但是,我们使用Linux更多的是没有图像界面的服务器版本。因为图像界面会占用很多的系统资源,而较高配置的服务器并不便宜。也因此Linux服务器大多会开放SSH服务,管理员通过SSH登录服务器进行管理。


而Windows在上,你需要安装ssh客户端才能使用,但是Windows默认的CMD控制台,用过都知道,体验不是一般的差,只能偶尔应急一下使用。为此不得不寻早一个windows上的解决方案,但是最让我满意的莫过于Xshell。


从我的第一台服务器起(高中的时候),我就在使用Xshell了。然而让我惭愧的是,用了多年的Xshell,我只是最基本功能🤦‍♂️。


这里总结一下Xshell的使用经验,用来帮助我提升生产力。

密钥相关


SSH支持使用密码连接,但是如果密码过于简单,且端口也不改,这样服务器会处于一种很 ​危险​ 的状态。


比较好的做法是使用密钥进行登录,服务器上直接使用 ​ssh-keygen​ 即可生成密钥,然后在xshell配置即可。


在Xshell也可以直接生成的,在 ​工具 - ​用户密钥管理者 即可看到,图形化的界面,一看就懂。这样配置一下就可以实现无密码登录了。


但是私钥存在泄漏的分享,为此建议生成密钥的时候加入一个密码保护,只不过这样岂不是又回到了密码的登录了吗?别急,我们还有 ​ssh-agent​ 为你的私钥保驾护航,有了它,你只需要输入一遍你的私钥密码,以后使用时候都是由 ​ssh-agent​ 为你代劳输入密码了。是不是很方便?


在Xshell中, ​工具​ - ​Agent开始​ 即可看到 ​ssh-agent​ ,你可以在这里管理你的密钥。


最后一点,别忘记保护你的 ​Xshell​,因为你的Xshell里面往往会保存需要登录凭据信息,虽然它是经过加存放的。但是Github上面有专门的界面工具,只需要知道你的用户名和 ​sid​ 即可完成解密。



因此别忘记在 ​工具 ​设置主密码​ 进一步保护你的Xshell。

快捷键相关


写过代码用的很六一个快捷键, ​Ctrl+C/V​ 这个简直就是生产力的核心;如果更进一步,还有 ​Win+V​ 来进一步提升你的生产力。但是如果你尝试在控制台使用这个快捷键,就会发现并不起作用,只会出现一个 ​^C​ 来表示你输入了东西。


这是因为Linux下的Shell一般都有自己的默认快捷键,例如 ​^C​ 就是强行终止当前程序的意思。显然和生产力使用快捷键冲突了,如果细心一点很快就能发现复制粘贴变成了, ​Shift/Ctrl+Insert​ 了。


这个快捷键可以在 ​工具 ​按键对应​ 进行设置的。


image.png

了解一下可以极大的提升生产力呢。


只是可惜我了解的比较晚,之前只会 ​Alt+Enter​ 进行全屏的切换,现在GET到 ​Alt+S​ 可以切换到简单模式,之前不了解的时候都是手动把其它控件隐藏掉,以此来达到间接模式的效果。


Linux控制台快捷键 

  • Ctrl + a/Home 切换到命令行开始
  • Ctrl + e/End 切换到命令行末尾
  • Ctrl + l 清除屏幕内容,效果等同于clear
  • Ctrl + y 粘贴刚才所删除的字符
  • Ctrl + r 在历史命令中查找 (这个非常好用,输入关键字就调出以前的命令了)
  • Ctrl + c 终止命令
  • ctrl + o 重复执行命令
  • Ctrl + d 退出shell,logout  (小心误触)
  • Ctrl + z 转入后台运行,但在当前用户退出后就会终止
  • Ctrl + t 颠倒光标所在处及其之前的字符位置,并将光标移动到下一个字符
  • Ctrl+w 剪切光标所在处之前的一个词(以空格、标点等为分隔符)
  • Ctrl+s 锁住终端
  • Ctrl+q 解锁终端
  • !! 重复执行最后一条命令
  • history 显示你所有执行过的编号+历史命令。这个可以配合!编辑来执行某某命令
  • !$ 显示系统最近的一条参数



开发相关


SSH还有一个使用的功能就是进行代理转发,这一点实在太好用了。只需要一个SSH的代理,即可解决开发的一大痛点,连接远程数据库。


一般而言,数据库是不会对外网开放的,而开放一般情况下还是在本地进行,这样方便调试。通过SSH即可建立一条通向数据库的代理,而且自带加密,非常的实用。


在 ​Xshell​ 中 ​查看 ​隧道窗格​ 即可进行代理的管理image.png

image.png

这里,数据库跑在Docker里面,对外并没有映射端口,而是在Docker Swarm的网络里面。

只需要一个 ​SSH服务器 容器也加入这个网络即可,我们通过这个SSH服务器进行代理,进而访问数据库。


文件传输


相比于 ​xftp​ 我更喜欢 ​Xshell​ 自带的文件传输功能。


在服务器上安装 ​lrzsz 命令,

apt install lrzsz

使用 ​rz​ 即可上传本地文件, ​sz​ 即可下载服务器文件。


如果是文件夹,还是使用 ​tar​ 进行打包比较好。


会话管理


SSH连接难免会遇到网络文件,进而断开连接。等网络正常之后再去连接,是无法恢复到之前的会话的。


这个时候就该 ​screen​ 命令出场了。



总结


Xshell作为一个Windows上的SSH客户端是真的好用,虽然它是收费软件,但是它提供了面向家庭/学校免费的版本,唯一的限制就是它只能同时打卡4个选项夹,多了就需要开多个窗口了。但是这点限制习惯之后完全不是障碍,你看看你的Chrome开了多少窗口。区分得过来吗?


其它Xshell还有一下更高级的功能,例如同时管理多个会话等,但是可怜我服务器不多,注定用不到这些功能了。