CSDN:SSH协议详解 + Xshell连接Linux虚拟机完整实操

CSDN:SSH协议详解 + Xshell连接Linux虚拟机完整实操

一、什么是SSH连接协议📌

  1. 定义

SSH(Secure Shell,安全外壳协议)是一种加密的远程登录协议,运行在应用层,默认端口22,用于在不安全网络中安全访问远程服务器/虚拟机。

  1. 核心优势
    加密传输:对比明文传输的Telnet,SSH对账号、密码、操作指令全程加密,防止抓包窃取信息;
    功能拓展:除远程命令行登录外,还支持SFTP/SCP文件传输、端口转发;
    身份验证:支持密码登录、密钥免密登录两种方式。

  2. 工作流程

客户端发起连接 → 服务器返回公钥 → 协商加密算法 → 身份校验(密码/密钥)→ 建立加密会话。
二、Xshell连接Linux虚拟机完整操作步骤

前置准备

  1. 虚拟机(CentOS/Ubuntu)已开机;
  2. 虚拟机与宿主机网络互通(NAT/桥接模式);
  3. 虚拟机已安装openssh-server服务。

步骤1:虚拟机配置与信息查询

  1. 登录虚拟机终端,查看网卡IP:

bash

CentOS/RHEL

ip addr

Ubuntu

ifconfig

记录 inet 后的IPv4地址(例:192.168.137.100)。
2. 检查SSH服务状态:

bash

systemctl status sshd
未启动: systemctl start sshd
开机自启: systemctl enable sshd

步骤2:Xshell新建会话

  1. 打开Xshell → 左上角「文件」→「新建」;
  2. 会话属性配置:
    名称:自定义(如Linux虚拟机)
    协议:SSH
    主机:填写虚拟机IPv4地址
    端口号:默认22
  3. 点击「连接」,弹出身份验证窗口;
  4. 输入虚拟机用户名、密码,勾选记住密码,确定;
  5. 连接成功,出现虚拟机命令行提示符。

步骤3:成功连接截图说明

截图包含内容:

  1. Xshell新建会话配置界面;
  2. 虚拟机 ip addr 查询IP终端截图;
  3. SSH服务启动成功截图;
  4. 最终登录成功的Xshell操作界面。

三、连接常见报错、原因与解决方案⚠️

报错现象 根本原因 解决办法
Could not connect to ‘xxx’ (port 22): Connection failed 1. 虚拟机IP输错 2. 网络不通 3. 虚拟机sshd未启动 4. 防火墙拦截22端口 1. 重新执行 ip addr 核对IP 2. 宿主机ping虚拟机IP,不通则切换虚拟机网络模式为NAT 3. systemctl start sshd 启动服务 4. 防火墙开放22端口
Access denied 用户名/密码错误,或该用户禁止SSH登录 1. 核对账号密码 2. root禁止远程登录:修改 /etc/ssh/sshd_config ,设置 PermitRootLogin yes ,重启sshd
Connection refused SSH服务未监听22端口,或端口被修改 1. 查看sshd配置 /etc/ssh/sshd_config 确认Port值 2. 使用对应端口重新连接
Host key verification failed 虚拟机重装/IP复用,本地主机密钥缓存冲突 Xshell工具 → 清除对应会话主机密钥缓存,重新连接
连接超时 宿主机与虚拟机不在同一网段,路由器拦截 虚拟机切换桥接模式,关闭宿主机第三方防火墙/杀毒软件

四、Xftp文件传输操作教程💡

Xftp配套Xshell使用,基于SSH的SFTP协议加密传输文件,无需额外开启FTP端口。

方式1:Xshell一键唤起Xftp

  1. Xshell成功登录虚拟机后,顶部工具栏点击「Xftp图标」,自动建立SFTP会话;
  2. 界面分左右窗口:左侧为宿主机本地文件,右侧为虚拟机远程目录。

方式2:手动新建Xftp会话

  1. 打开Xftp → 新建会话;
  2. 协议选择 SFTP(默认端口22) ,填写虚拟机IP、用户名密码;
  3. 连接后拖拽文件双向传输。

常用操作

  1. 本地传虚拟机:左侧选中文件,拖拽至右侧远程文件夹;
  2. 虚拟机下载到本地:右侧文件拖拽至左侧本地目录;
  3. 权限不足报错:切换至虚拟机 /tmp 临时目录传输,或使用sudo提升权限。