用xshell连上Linux虚拟机之后,第一件想干的事往往就是传文件。尤其是你拿着一堆安装包、脚本、配置模板,却不知道怎么从Windows主机挪到虚拟机里,这种感觉我太熟了。不管你是刚在VMware里装完Ubuntu,还是跟着教程准备给Linux系统安装Python环境,文件传输总会成为绕不开的一步。
xshell作为Windows下最常用的SSH客户端之一,它自带的文件传输能力其实被很多人低估了。有人只知道用rz命令,有人干脆用U盘拷贝到虚拟机再挂载,实际上xshell配合Linux端的几种常用传输协议,就能覆盖从几百KB的小脚本到几个GB的大安装包所有场景。这篇分享我会把xshell向Linux虚拟机传文件的几种可靠方式、背后的原理、踩过的坑,一次说清楚。
适合看这篇内容的人大概是两类:一类是刚接触虚拟机、照着教程装好Linux系统但卡在“文件怎么进去”这一步的新手;另一类是已经有Linux基础,但传文件时经常断线、乱码、权限报错,想知道更稳妥方案的老手。两种读者我都有对应内容给到你。
1. 传文件之前,先把通道打通:虚拟机网络与SSH准备
1.1 虚拟机三种网络模式,连接之前必须分清楚
很多人在xshell里输入虚拟机IP连不上,第一反应是SSH配置有问题,其实有一大半原因出在虚拟机的网络模式上。VMware、VirtualBox这类虚拟机软件,给虚拟机提供了三种常见网络模式,理解它们就等于理解了xshell为什么有时候能连上、有时候死活连不上。
第一种是NAT模式,也是绝大多数情况下的默认选项。这种模式下,宿主机相当于一台小路由器,虚拟机躲在宿主机后面,对外部网络来说是不可见的,但虚拟机可以主动访问外部网络。宿主机和虚拟机之间通过一个虚拟网卡互通。用生活里的话说,虚拟机像住在宿舍里的学生,宿主机是楼下的传达室,学生能出去寄快递,但外面的人不能直接进宿舍找学生。在xshell连接场景下,NAT模式完全够用,因为主动发起连接的是宿主机上的xshell,虚拟机只需要监听22端口并响应就行。
第二种是桥接模式。这种模式下,虚拟机直接接入宿主机所在的物理局域网,像一台独立的电脑,拥有和宿主机同一个网段的IP。好处是局域网内其他机器也能直接访问虚拟机,缺点是如果公司网络或家庭路由器有严格的DHCP绑定、IP过滤规则,虚拟机可能拿不到IP,反而导