前言
在上篇文章中,我们成功在虚拟机中安装了Linux操作系统。但每次操作都要在虚拟机界面中进行,不仅切换不便,也无法复制粘贴命令。有没有更高效的方式?答案就是通过SSH协议远程连接虚拟机,在Windows本地使用Xshell终端工具直接操作Linux。
本文将带你从零开始,理解SSH协议的原理,并通过Xshell和Xftp实现远程连接与文件传输。
一、什么是SSH连接协议?
1.1 SSH的起源
SSH是Secure Shell的缩写,即安全外壳协议,是一种基于TCP的加密网络传输协议。它由芬兰赫尔辛基大学的Tatu Ylönen于1995年开发——当时该校发生了密码嗅探攻击事件,促使他开发了SSH协议的首个版本,用以解决远程登录和数据明文传输的安全漏洞。
在没有SSH协议之前,Telnet、FTP等通信协议在网络上都是明文传输口令和数据,攻击者很容易截获传输的数据,进行“中间人攻击”。SSH的出现彻底改变了这一局面。
1.2 SSH的核心功能
SSH主要用于远程登录、远程命令执行、文件加密传输、端口转发等,位于OSI网络模型的应用层。它通过加密技术,让数据在不安全网络(如公网)传输时,避免被窃听和篡改,完全取代了Telnet、rlogin等不安全的远程登录协议。
1.3 SSH协议架构与工作原理
SSH协议采用客户端-服务器架构,服务器默认监听22号TCP端口。其协议采用分层架构,主要由三个部分组成:
传输层:负责密钥交换、服务器认证、加密和完整性保护。在TCP/IP连接建立后首先进行,协商双方支持的加密算法并生成会话密钥。
用户认证层:处理客户端身份验证,支持密码认证、公钥认证、键盘交互认证等多种机制。
连接层:认证成功后,负责管理多个独立的逻辑通道,用于远程命令执行、shell访问、端口转发等。
SSH连接建立过程可以分为四个阶段:
TCP连接建立:客户端发起与服务器22端口的TCP连接
协议版本交换:双方确定使用的SSH版本(如SSH-2.0)
密钥交换与加密参数协商:使用Diffie-Hellman算法安全生成共享密钥
用户认证:客户端向服务器证明自己的身份
简单理解:SSH就像一条加密的“安全隧道”,让您可以在Windows电脑上安全地“遥控”Linux虚拟机,所有传输的数据都经过加密,第三者无法窃听。
二、Xshell连接虚拟机的步骤
Xshell是一款功能强大的SSH客户端软件,支持多标签会话、密钥认证、SFTP文件传输等高级特性。
2.1 环境准备
第一步:下载并安装Xshell
前往Xshell官方网站(https://www.xshell.com/)下载安装包,根据操作系统版本完成安装。
第二步:启动虚拟机并获取IP地址
开启Linux虚拟机,打开终端,运行以下命令查看IP地址:
bash
ip addr show
或使用
ifconfig
找到主网卡(如ens33或eth0)对应的inet字段,记录IP地址(如192.168.x.x),排除127.0.0.1和169.254.x.x等无效地址。
第三步:确保SSH服务已开启
在Linux虚拟机终端中检查SSH服务状态:
bash
检查SSH服务状态
sudo systemctl status sshd
若未启动,执行启动命令
sudo systemctl start sshd
设置开机自启
sudo systemctl enable sshd
如果系统未安装SSH服务,需先安装:
bash
Ubuntu/Debian系统
sudo apt-get install openssh-server
CentOS/RHEL系统
sudo yum install openssh-server
2.2 Xshell新建会话
第四步:创建新会话
打开Xshell,点击顶部菜单栏的“文件”→“新建”(或按快捷键Ctrl+N)。
在弹出的“新建会话”窗口中填写以下信息:
配置项 填写内容
名称 自定义(如“MyLinuxVM”),便于识别
协议 选择“SSH”
主机 输入虚拟机的IP地址
端口号 默认22(若未修改保持默认)
点击“确定”保存会话配置。
第五步:连接虚拟机
在Xshell主界面中找到刚刚创建的会话,双击进行连接。
首次连接会弹出“SSH安全警告”,提示确认服务器的指纹信息,点击“接受并保存”。
输入Linux虚拟机的用户名(如root或普通用户),点击“确定”。
输入对应的密码,点击“确定”。
第六步:成功连接
若配置和输入信息无误,Xshell将显示Linux虚拟机的终端界面。此时,便可像在本地终端一样执行各种Linux命令了!
三、连接过程中可能出现的错误及解决方案
错误1:连接超时 / 网络不可达
现象:Xshell提示“Connection timed out”或“网络不可达”。
原因分析:
虚拟机IP地址填写错误
虚拟机与主机网络不通(防火墙拦截、虚拟机未联网)
虚拟机网络模式配置不当
解决方案:
在虚拟机中再次确认IP地址(ip addr show),确保与Xshell中填写的一致
在Windows主机上用ping 虚拟机IP测试网络连通性
检查虚拟机网络模式:桥接模式需与宿主机同网段,NAT模式需检查DHCP分配范围
关闭虚拟机防火墙或开放22端口:
bash
CentOS/RHEL
sudo systemctl stop firewalld
Ubuntu/Debian
sudo ufw allow 22
检查Windows防火墙,允许VMware相关进程的网络访问
错误2:Connection refused(连接被拒绝)
现象:Xshell提示“Connection refused”。
原因分析:
SSH服务未启动
端口号填写错误(非22端口)
防火墙拦截了22端口
解决方案:
在虚拟机中检查SSH服务状态:sudo systemctl status sshd
若未启动,执行:sudo systemctl start sshd
检查端口监听情况:netstat -tunlp | grep 22,确认22端口被SSH服务占用
检查防火墙是否开放了22端口
错误3:Permission denied(权限被拒绝)
现象:Xshell提示“Permission denied”。
原因分析:
用户名或密码输入错误
SSH服务禁用了密码认证(配置文件/etc/ssh/sshd_config中PasswordAuthentication no)
解决方案:
仔细核对用户名和密码(注意大小写)
检查SSH配置文件:
bash
sudo vi /etc/ssh/sshd_config
确保 PasswordAuthentication yes
修改后重启服务
sudo systemctl restart sshd
若Root用户无法登录,检查PermitRootLogin是否设置为yes
错误4:Socket error Event: 32 Error: 10053
现象:连接后突然断开,提示“Socket error Event: 32 Error: 10053”。
原因分析:
IP地址发生变化导致连接中断
网络不稳定或超时设置过短
解决方案:
在Xshell会话设置中勾选“重新连接”,将时间间隔从30秒改为60秒
重新获取虚拟机IP地址,更新Xshell会话中的主机IP
重启SSH服务后重新连接
错误5:NAT模式下22端口连接失败
现象:NAT模式下Xshell始终无法连接,提示“connection failed”。
原因分析:
手动设置的IP地址与VMware虚拟网络编辑器中的子网IP不在同一网段
解决方案:
打开VMware“编辑”→“虚拟网络编辑器”
查看NAT模式的子网IP(如192.168.10.0)
将虚拟机IP地址修改为同一网段(如192.168.10.x)
在Xshell中更新为正确的IP地址后重新连接
错误6:虚拟机获取到169.254.x.x异常IP
现象:虚拟机IP地址为169.254.x.x,无法正常连接。
原因分析:
Windows的VMnet8虚拟网卡获取到了异常IP,DHCP服务未正常工作
解决方案:
检查Windows防火墙,允许“VMware DHCP Service”进程的网络访问
在VMware虚拟网络编辑器中还原默认设置,重新配置网络
若同时安装了VirtualBox,先卸载后重启VMware
💡 排查思路小结:遇到连接问题时,可按以下顺序逐一排查——①能否ping通 → ②防火墙是否关闭/开放22端口 → ③SSH服务是否启动 → ④IP地址和端口是否正确。
四、Xftp文件传输
4.1 Xftp是什么?
Xftp是一个基于Windows平台的SFTP/FTP文件传输软件,用户可以通过它在Windows和Linux系统之间安全地传输文件。它基于SSH协议的SFTP(SSH File Transfer Protocol)进行传输,所有网络流量都经过加密。
4.2 Xftp连接步骤
第一步:下载安装Xftp
前往Xftp官方网站下载安装包,完成安装。
第二步:新建会话
打开Xftp,点击“文件”→“新建”(或按Ctrl+N)。
在“会话属性”窗口中填写:
配置项 填写内容
名称 自定义(如“MyLinuxVM”)
协议 选择“SFTP”(默认端口22)
主机 输入虚拟机的IP地址
用户名 输入Linux用户名
密码 输入对应用户的密码
点击“连接”。
第三步:传输文件
连接成功后,Xftp界面分为左右两个窗口:
左侧:Windows本地文件路径
右侧:Linux远程文件路径
上传文件(Windows → Linux):选中左侧本地文件,拖拽到右侧Linux窗口
下载文件(Linux → Windows):选中右侧远程文件,拖拽到左侧Windows窗口
注意:确保Linux服务器已开启SSH服务,否则Xftp无法连接。Xftp支持断点续传,传输大文件时可在传输日志中查看进度。
五、过程中的结果截图(示例说明)
说明:以下是关键步骤的截图示例,实际安装时请根据你的操作自行截图替换。
图1:虚拟机中查看IP地址
在Linux终端执行ip addr show命令,显示IP地址的截图。
图2:检查SSH服务状态
执行sudo systemctl status sshd,显示服务运行状态的截图。
图3:Xshell新建会话
Xshell中“文件”→“新建”会话配置窗口的截图(含名称、协议、主机、端口)。
图4:SSH安全警告
首次连接时弹出的“SSH安全警告”对话框截图。
图5:Xshell成功连接
成功连接后显示Linux终端界面的截图。
图6:Xftp新建会话
Xftp中新建会话配置窗口的截图。
图7:Xftp文件传输
Xftp双窗口界面中拖拽文件传输的截图。