-
-
[分享] SSH远程操作部分常用工具和命令汇总
-
发表于: 2019-3-29 22:31 2274
-
根据个人经验总结,多有疏漏。本地主机与远程服务器全部Ubuntu系统,图片来自网络。本篇涉及工具和命令有:scp,tmux,sublime text(远程编辑),X11(远程显示图片),jupyter notebook(远程浏览器)。
本地准备
俗话说,善其事先利其器嘛。在介绍通过SSH操作远程服务器的常用命令之前,先推荐几个好用的软件。
1. tmux
类似于GNU Screen的一个多窗口终端,可以根据自己的喜好对窗口进行分割,便于查看和操作。
- 源码及安装:Github
常用命令:(命令前缀快捷键默认为
ctrl
+b
)$ tmux new -s [name] // 创建一个新session
每个session内,使用
ctrl
+b
前缀,并加上:c
: 创建一个新窗口,
: 重命名一个窗口"
: 分割当前窗口为上下窗格%
: 分割当前窗口为左右窗格[
: 浏览当前窗格历史记录,按q
退出浏览x
: 删除当前窗格←
↑
→
↓
: 移动到指定窗格0
~9
: 跳转到指定号码的窗口&
: 删除当前窗口
其它还有类似 ls
、 attach-session
等命令,可参考 tmux cheatsheet 。
2. sublime text
不谈编辑器之争,简单介绍一下sublime text,这个软件不是开源de。
原始的sublime text是个光杆司令,没有左边目录也没有高亮,一切的一切都要从安装package开始。
- package control: 照着装吧,有了它才能方便装各种 package
装了package control之后,就可以愉快的 Shift
+Ctrl
+P
,然后开始 Package Control: Install package
之路。常用的包有:
SideBarEnhancements: 左边文件目录,可直接在目录中增删改查
SublimeLinter:代码错误提示
BracketHighlighter: 括号匹配标注
Evernote:本地访问印象笔记或evernote,支持markdown编辑笔记并保存到笔记本,需访问权限配置。
DocBlockr:代码注释工具
Alignment: 多行选择
其它还有各种语言、框架相关工具,可直接在package control中搜索。当需要使用sublime(通过ssh)本地编辑远程服务器上的文件时,还需要安装:
- rsub: 远程编辑文件(同rmate,默认使用端口52698)
SSH常用交互命令
一般ssh连接远程服务器之后,基本命令行能完成的功能都可以顺利执行,但偶尔免不了要传个文件、提高下用户体验之类的。这里介绍几个本地和远程交互中几个简单常用的功能。
1. 远程复制文件
$ scp 源地址 目的地址 //在本地运行
$ scp 1.txt username@remotehost:/remote/directory //本地文件复制到服务器
2. 远程显示图片
有时候在服务器上运行的程序要输出图片,例如python的image或者matplotlib包中常用到的 image.show()
和 plt.show()
,通过X11在本地也可以显示。这需要在建立ssh连接时使用:
$ ssh -X username@remotehost
或者使用 -Y
和 eog:
$ ssh -Y username@remotehost $ eog /remote/directory/pic.png
3. 远程编辑文本
其实使用vim等编辑器在命令行也可完成,但配合前面介绍的sublime text,在本地sublime上编辑保存远程文件,也不失为一种选择。
这里除了本地需要安装sublime text和rsub之外,还需要在服务器端预安装 rmate,然后建立ssh连接时需转发52698端口:
$ ssh -R 52698:localhost:52698 username@remotehost
之后使用rsub或rmate命令即可在本地sublime text打开文件:
$ rsub /file/1.txt
4. 远程浏览器
本地浏览器连接服务器浏览器的内容,类似地是将服务器8080端口转发到本地8080端口,建立ssh连接时使用:
$ ssh -N -L 8080:localhost:8080 username@remotehost
例如,如果使用jupyter notebook编辑运行python程序,可在建立上述连接后使用
$ jupyter notebook --no-browser --port=8080
注:如果觉得多种不同的ssh连接选项粘贴起来也很麻烦,当然可以通过编辑~/.ssh/config
保存服务器和连接信息,这样每次就可以直接
$ ssh hostname
另外,很多人也喜欢用teamviewer这类远程桌面软件,当然也很方便,这里仅提供多一种选择,供喜欢命令行操作的朋友取用。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课