远程连接Linux虚拟机:SSH协议详解与Xshell/Xftp实战教程

远程连接Linux虚拟机:SSH协议详解与Xshell/Xftp实战教程

前言
在上篇文章中,我们成功在虚拟机中安装了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双窗口界面中拖拽文件传输的截图。