目录
- 0 背景
- 1 将文件传送到服务器
-
- 1.1 主机上的虚拟机
- 1.2 另一台独立的计算机(包括上面的虚拟机)
- 1.3 远程文件传输
-
- 1.3.1 scp
- 2 操作服务器
-
- 2.1 ssh
- 2.2 Termius
-
- 2.2.1 下载
- 2.2.2 安装
- 2.2.3 使用
- 2.2.4 小结
- 3 总结
0 背景
你是一个开发者,有自己的测试环境:一个Linux服务器(假设是Ubuntu24.04)。你在自己的计算机上写了代码,打成了jar包,然后准备部署这个包,开始测试。 有几种常见情况: 1. 服务器是你计算机上的虚拟机; 2. 服务器是你的另一台有显示屏的计算机,比如笔记本电脑; 3. 服务器是你的另一台没有显示屏的计算机,比如一个噪声很大的黑盒子; 4. 服务器是你另一台计算机上的虚拟机; 5. 服务器是你在某平台租的云服务器; 有两个基本问题: 1. 你怎么将这个包传送到服务器上呢? 2. 你是直接在服务器上操作还是通过其他什么方法使用服务器呢? 为了表述方便,这里约定jar包等文件资源所在的计算机为主机,jar包等文件资源要传送的目的地,即服务部署的计算机为服务器。
1 将文件传送到服务器
首先解决最基本的问题,就是两个计算机之间的文件传输问题。有很多工具都可以做到这件事,下面就常见的几种情况总结一下将文件从主机传送到服务器的方法。 前面会介绍传统的独有传输方式,然后会介绍通用的方式。
1.1 主机上的虚拟机
你的文件在主机上,你要将其传到主机上的虚拟机中,常见的方法是共享文件夹,共享文件夹的配置和具体的虚拟机软件有关,关于VirtualBox的共享文件夹配置可以参考这篇文章。 关于虚拟软件传文件的其他的方式不介绍,因为效率和稳定性可能不如共享文件夹(笔者以前尝试过直接拖放文件结果把电脑直接搞蓝屏了),有心理阴影所以不做介绍。
1.2 另一台独立的计算机(包括上面的虚拟机)
如果只是主机中的虚拟机,那么传文件是很方便的,如果是另一台独立的计算机呢?比如笔记本电脑。最原始的方法是使用传输介质,比如U盘。 当然,如果是另一台计算机上的虚拟机的话,和主机上的虚拟机类似,因为一般不会在Linux系统里装虚拟机,能有虚拟机的计算机,一般是可以直接上手操作的Windows系统。
1.3 远程文件传输
这是一种通用的文件传输方式,当然,这一般是需要网络支持的。这种方式不管主机和服务器是什么计算机,不管操作系统,也不论可不可以接触到,只要计算机上有相应的工具,支持网络协议即可。
1.3.1 scp
系统自带的文件传输工具,不论是Windows还是Ubuntu系统,所以只需要在命令行输入即可,在Windows中打开cmd就可以直接使用:
# 传输多个文件
scp file1 file2 user@server:/path/to/dest
# 传输文件夹,注意不能直接写文件夹的名字,会出现 is not a regular file 的错误
scp dir/* user@server:/path/to/dir
# 目的文件夹可以不存在,但目的文件夹的父路径一定要存在,不然会出现 No such file or directory 的错误
# 示例
scp xxx.jar username@192.168.11.12:~/tmp
# 执行命令之后会让你输入另一台计算机的密码,输入即可
不过,如果是主机上的虚拟机的话,需要让虚拟机使用桥接网卡成为一台“独立”的计算机才行,如果是网络地址转换(NAT)的话,首先虚拟机的IP地址就很奇怪(10.0.2.15),而且连不上。然而如果确实需要在虚拟机为网络地址转换(NAT)时给它传文件,该怎么办呢? 这个时候需要手动设置一下虚拟机的端口转发,然后在使用scp的时候指定端口即可。 首先打开对应虚拟机的设置,然后找到“网络” 然后在网络地址转换(NAT)模式下,点击“端口转发”,然后点击右上角的加号图标,添加端口转发规则:
随便写一个主机端口,然后看一下虚拟机的IP地址,VirtualBox中的虚拟机在网络地址转换(NAT)下的默认IP是10.0.2.15,子系统端口填22,得先在虚拟机中装一个openssh-server。 然后在scp命令中使用-P指定配置的主机端口号即可,注意是大写的P
scp -P 1234 xxx.jar username@localhost:~/tmp
# 然后会让你输入username@localhost的密码,也是虚拟机的密码
还有其它类似的命令行文件传输工具,但是实际上这个命令已经够用了,只要能够连接到另一台计算机即可传输文件。命令行的传输方式一般不用,除非特殊情况(比如从一个node传文件到另一个node),所以需要专业的工具,这个之后介绍。
如果某天你将你的虚拟机删除重新安装了,不过在配置端口转发的时候还是使用的上一次的1234,这个时候可能会出现下面的错误信息: 由于端口转发只针对某一台虚拟电脑设置,你把虚拟电脑删了之后,端口转发的设置随之消失,所以你重新安装虚拟机的时候,还需要重新设置。不过在你的宿主机上还留存着该虚拟机的信息,它并不会主动删除,需要你打开具体的文件手动删除即可。文件的路径在错误信息里已经有提示了,注意用户名不一定是管理员Administrator,文件名为known_hosts,将其用文本编辑器打开后,删除对应的信息即可。比如:
将这些删除即可。
2 操作服务器
光传文件还不够,还得能够操作服务器才行,如果是能够接触到的服务器,直接去操作它也不是不行,但有时候可能因为服务器本身的界面太丑或者是因为懒得在两台计算机之间来回切换(一会儿操作这个计算机,一会儿操作那个计算机),所以想有一个漂亮且方便的方式。 能直接操作服务器还好,有时候界面丑点也能忍,但是有些服务器是不能“直接”操作的,比如云服务器,它只会提供给你一个终端命令行操作,不过这个命令行感觉也不太方便。 产生上述问题的原因只是人类难以忍受某种事物而产生的一种优化的想法。比如有人会因为不想洗碗所以干脆不做饭。 那么如何解决这个问题呢?使用专业的远程连接工具即可。下面介绍一个强大的命令行工具以及一个既美观又方便的图形化工具。
2.1 ssh
SSH(Secure Shell)是一种网络协议,用于在不安全的网络中安全地远程登录到另一台计算机。它通过加密通信来保护数据的机密性和完整性,防止中间人攻击、窃听和数据篡改。SSH 不仅用于远程登录,还广泛用于远程命令执行、文件传输(通过 SCP 或 SFTP)(这是上面scp命令要22端口的理由)、端口转发等。 要使用ssh命令得先安装openssh,这个安装比较简单,这里不介绍。安装好并开启22端口之后,直接执行
ssh username@server
# 比如
ssh user1@192.168.11.12
ssh node3
然后输入密码即可。 这样就可以直接连接到服务器的命令行,从而可以操作服务器了。
2.2 Termius
我第一次使用的图形化ssh工具是XShell,当时不知道还有哪些其它的ssh工具,所以觉得很好用(也确实好用),没有在意好不好看。不过后来下载的时候好像要登录什么的,甚至收费,觉得麻烦就没有用了。 然后我使用开源的WindTerm作为替代,这是我在网上文章中看到的,文章介绍了很多开源工具,不过界面都不如WindTerm好看。这款软件的好处就在于解压即用,不用安装,界面也比较好看,我也是喜欢了一阵子。不过有时候用clear命令然后回车,刚清的屏又回来了,而且界面的结构稍微有些复杂,有点把所有的窗口都汇聚到一个界面的意味,不过好多都没用,反而显得累赘了。 然后我接触了Termius,就喜欢上了,这款软件正常来讲是收费的,不过作为Starter使用的话免费,其实只是用来传文件或者连接其他计算机的话,免费版也够用了。需要使用邮箱注册,不过界面美观大方,注册就注册吧,界面是全英文的,可能不是对所有人都友好,但是不会影响使用。 下面介绍一下如何安装使用
2.2.1 下载
下载方式常用的有两种,一种是从浏览器官网下载,一种是Microsoft Store下载,两种方式有个区别就是图标是方的还是圆的。
2.2.2 安装
直接运行安装程序即可。
2.2.3 使用
常用的功能就是SFTP传输文件以及ssh连接远程主机。 SFTP可以在任意两个计算机之间传输文件
由于这个功能只能选择已经保存的Host和Local,所以要先新建Host
然而这些并不是我喜欢它的原因,原因是它有很多主题和字体可以选择,双击保存的Hosts即可开始ssh连接,连接上之后可以切换主题和字体(在创建的时候就可以指定主题),这样甚至可以一个连接一个主题,再也不是单调的黑和白,字体也可以放大缩小和切换。
有很多主题可供选择,不止截图中的那些,笔者偏向于使用Solarized Light主题和PT Mono字体。
2.2.4 小结
上述只是基本的使用,不过对于笔者来说已经够用,有兴趣的可以继续探索。但是在官网下载安装的Termius在一段时间之后会自动消失(听说是自己把自己卸载了。。。),虽然这是一个bug,但是奈何它的使用体验比其它的更好。。这是笔者的亲身经历,所以平时做好一定的备份很重要,推荐在Microsoft Store安装(不过这个图标是方的)。 如果有些远程计算机不能用Termius的SFTP功能传输文件,那么还有一个专门用于传输文件的图形化工具:WinSCP,虽然界面看起来比较老,不过是中文版的,而且传输文件感觉还行。
3 总结
这篇博客主要介绍了怎么远程连接另一台计算机以及传输文件等,并记录了一些关于虚拟机的特殊情况(虚拟机软件太多了只用VirtualBox举例),最后用一个图形化ssh连接工具Termius解决了开头提出的两个基本问题。
评论前必须登录!
注册