远程访问方式一览:SSH、SFTP、RDP、VNC 与 WebRTC
逐项认识 SSH、SFTP、Mosh、Telnet、RDP、VNC、X11 Forwarding、WinRM 和 WebRTC,理解它们各自提供的远程交互能力。
远程访问常被概括成“连到另一台电脑”。建立连接以后,我们实际得到的入口可能是命令行、文件传输、完整桌面、单个图形窗口,也可能是浏览器里的实时音视频和数据通道。SSH、SFTP、RDP、VNC 和 WebRTC 都常出现在远程操作场景中,每种技术提供的交互能力各有侧重。
本文逐项介绍这些方法本身,并说明它们在服务器维护、远程桌面和机器人开发中的常见用途。
SSH(Secure Shell)用于安全地登录远端主机和使用其他网络服务。登录后,终端会连接到远端 Shell,我们可以运行命令、查看日志、启动程序和管理文件。SSH 还支持端口转发;SFTP、SCP 等文件传输工具也常与 SSH 配合使用。RFC 4251:SSH 协议架构
常见连接形式如下:
ssh 用户名@远程主机例如:
ssh robot@192.168.1.20SSH 适合管理 Linux 服务器、开发板和机器人主机。它提供的是命令行会话,远端程序运行在目标机器上,当前窗口显示终端交互。
SFTP(SSH File Transfer Protocol)是文件传输协议。OpenSSH 的 sftp 客户端通过加密的 SSH 连接完成文件传输,也支持公钥认证和交互式文件管理。OpenBSD sftp 手册 SSH 连接协议支持启动预定义的 subsystem,文件传输机制就是这类 subsystem 的典型用途。RFC 4254:SSH Connection Protocol
SFTP 和 FTP、FTPS 是不同协议。FTPS 是在 FTP 上加入 TLS 保护;SFTP 使用 SSH 连接和认证。RFC 4217:Securing FTP with TLS 使用 SFTP 时,客户端与服务端通常连接 SSH 服务端口,默认端口常见为 22,实际端口由服务器配置决定。
连接远端主机后,sftp 会进入交互模式:
sftp 用户名@远程主机常用命令包括:
pwd # 查看远端当前目录ls # 列出远端文件lcd ~/Downloads # 更改本地目录cd /var/log # 更改远端目录get syslog ./syslog # 下载远端文件到本地put ./config.yaml /tmp/ # 上传本地文件到远端bye # 退出 SFTPSSH 主要提供远端命令行会话,SFTP 提供远端文件浏览、上传和下载。需要批量传输文件或在图形客户端中管理远端目录时,SFTP 是常见选择。
Mosh(mobile shell)面向交互式终端使用。它先通过 SSH 登录并启动远端服务,再通过 UDP 同步终端状态;客户端切换网络或短暂断线后,原有 Shell 会话通常可以继续使用。Mosh 适合 Wi-Fi、移动网络和长距离连接环境。Mosh 官方说明
Mosh 沿用 SSH 的登录认证方式。使用时,目标机器需要安装 Mosh 服务端,网络也需要允许相应的 UDP 通信。
Telnet 提供终端与远端进程之间的双向文本通信,早期常用于远程登录和设备管理。RFC 854:Telnet 协议规范
基础 Telnet 会话没有 SSH 那样的加密保护,因此适合认识历史协议或连接封闭实验环境中的旧设备。现代远程登录一般使用 SSH。
RDP(Remote Desktop Protocol)可以把远端桌面画面传到客户端,并把键盘和鼠标输入送回远端。Windows 远程桌面和 Windows Server 的远程桌面服务都使用 RDP。Microsoft:Remote Desktop Protocol
RDP 适合需要完整图形桌面、远程运行 Windows 软件或维护 Windows 主机的场景。用户看到的是远端会话中的桌面和应用窗口。
VNC 使用 RFB(Remote Framebuffer)协议传输远端图形界面的屏幕更新,并把用户操作发回远端。RFB 的协议说明覆盖多种窗口系统,VNC 是它的常见实现。RFC 6143:RFB 协议
VNC 适用于跨平台远程查看和控制图形桌面。不同 VNC 软件在认证、加密、编码和剪贴板支持方面有所区别,连接能力取决于具体客户端和服务端实现。
X11 Forwarding 通过 SSH 转发 X11 图形连接。程序在远端运行,窗口绘制结果显示在本地 X Server 上;在 OpenSSH 中可以用 ssh -X 启用转发。OpenBSD ssh 手册
这种方式适合偶尔打开远端 Linux 图形程序的场景,例如启动一个配置工具。它主要转发图形程序的窗口,交互表现会受到网络延迟和本地图形环境影响。
PowerShell Remoting 可以在远端 Windows 计算机上运行 PowerShell 命令、创建会话并管理多台主机。它通常使用 WinRM 和 WS-Management 建立连接;PowerShell 也支持使用 SSH 作为远程会话传输方式。Microsoft:运行远程命令、Microsoft:PowerShell Remoting over SSH
它适合自动化 Windows 系统管理任务,例如批量检查服务状态、收集日志和执行配置脚本。
WebRTC 为浏览器和原生应用提供实时音频、视频和数据通信能力。WebRTC 官方项目 页面里的远程桌面功能由具体应用构建:应用捕获远端屏幕,编码后发送为实时媒体流,再把鼠标、键盘或控制消息通过数据通道或其他应用通道送回远端。
WebRTC 的连接过程通常包括应用信令交换 SDP 和 ICE 候选信息、ICE 选择可用网络路径、再建立媒体或数据传输。媒体使用 RTP/RTCP 体系并由 SRTP/SRTCP 保护;DataChannel 使用 SCTP over DTLS over ICE。RFC 8834:WebRTC 媒体传输、RFC 8835:WebRTC 传输
浏览器显示“WebRTC connected”代表 WebRTC 对等连接已经建立。画面传输和鼠标键盘控制可以走不同通道,具体由远控应用决定。需要确认控制链路时,应检查应用的数据通道和输入转发实现。
在机器人项目里,SSH 可以用于登录主机、查看日志和启动 ROS 节点;WebRTC 可以承载浏览器端的实时视频或桌面画面;应用还可以通过 DataChannel 传送遥操作消息。机器人指令需要由应用定义消息格式、权限校验、速度限幅和急停处理,WebRTC 负责实时通信能力。
终端 ── SSH ──> 机器人主机 Shell浏览器 <── WebRTC 媒体流 ── 机器人画面浏览器 ── DataChannel 或应用通道 ──> 机器人控制程序- 运行命令、检查日志、维护服务器:使用 SSH。
- 上传、下载和管理远端文件:使用 SFTP。
- 网络经常切换、终端会话需要续接:考虑 Mosh。
- 操作 Windows 完整桌面:使用 RDP。
- 跨平台查看和控制远端桌面:使用 VNC。
- 打开单个远端 Linux 图形程序:考虑 X11 Forwarding。
- 批量管理 Windows 和运行 PowerShell:使用 PowerShell Remoting。
- 在浏览器中查看低延迟视频或构建实时远控页面:使用 WebRTC。
这些技术提供不同的远程交互入口。确定要操作的是终端、桌面、单个程序还是实时媒体后,连接方式就容易选定。