SSH协议详解 + Xshell连接Linux虚拟机 + Xftp文件传输实操排错全教程
一、什么是SSH连接协议
SSH(Secure Shell,安全外壳协议)是一种加密的远程登录协议,默认端口22,用于在不安全网络中安全远程管理服务器/虚拟机。
核心作用
替代明文传输的Telnet、FTP,所有数据(账号、密码、操作指令)全程加密,防止抓包窃取;
支持远程命令执行、文件传输、端口转发三大功能。
两种工作模式
SSH-2:当前主流版本,采用非对称加密(RSA/ECC)协商密钥,对称加密传输数据;
分为客户端(Xshell、Xftp、SecureCRT)与服务端(Linux系统自带sshd服务)。
配套工具分工
Xshell:SSH命令行终端,远程输入Linux指令;
Xftp:基于SFTP/SSH协议的图形化文件传输工具,上传下载文件。
二、Xshell连接Linux虚拟机完整步骤
前置准备
虚拟机开机,查看Linux内网IP:执行 ip a,记录ens33网卡inet地址(如192.168.137.100);
关闭Linux防火墙或放行22端口;确认sshd服务已启动 systemctl start sshd。
操作步骤
打开Xshell,点击左上角「文件」→「新建」,新建会话;
会话配置
名称:自定义(CentOS虚拟机);
协议:选择SSH;
主机:填入虚拟机IP地址;端口默认22;
左侧菜单栏切换「用户身份验证」,选择「密码」,输入Linux用户名、登录密码;
点击「连接」,弹出主机密钥提示框选择「接受并保存」;
成功登录,出现Linux命令行提示符,即可输入指令操作虚拟机。
三、连接过程常见报错、原因与解决方案
报错现象根本原因解决办法无法连接,提示连接超时1. 虚拟机与主机不在同一网段;2. 虚拟机防火墙拦截22端口;3. 虚拟机未开机1. 虚拟机网卡切换NAT模式,重新获取IP;2. 临时关闭防火墙systemctl stop firewalld;3. 确认虚拟机正常运行拒绝连接(Connection refused)Linux sshd服务未启动/未安装1. 安装ssh:yum install openssh-server;2. 启动服务systemctl start sshd;3. 设置开机自启systemctl enable sshd用户名/密码验证失败账号密码输入错误、root远程登录被限制1. 核对账号密码;2. 修改sshd配置/etc/ssh/sshd_config,开启PermitRootLogin yes,重启sshd主机密钥冲突警告之前同IP连接过其他虚拟机,密钥缓存不一致Xshell工具→清除主机密钥缓存,重新连接确认密钥端口22无法访问云服务器安全组/虚拟机防火墙屏蔽22端口放行22端口防火墙规则,云服务器添加安全组入站规则⚠️ 排错自检顺序:虚拟机是否开机 → ping IP能否通 → sshd服务状态 → 防火墙端口放行 → 账号权限配置
四、Xftp文件传输使用教程
Xftp同样基于SSH/SFTP协议,无需额外开放端口,和Xshell共用22端口。
新建会话
打开Xftp → 新建,协议选择SFTP,主机填虚拟机IP,端口22,输入Linux账号密码;
文件传输操作
上传:本地电脑文件拖拽至右侧Linux目录;
下载:Linux文件拖拽至左侧本地文件夹;
权限问题处理
若提示权限不足,两种方案:
传输至用户家目录 /home/用户名;
修改目标文件夹权限 chmod 777 /目标目录(测试环境使用)。