跳转到正文
Your Zestful Notions

远程访问方式一览:SSH、SFTP、RDP、VNC 与 WebRTC

逐项认识 SSH、SFTP、Mosh、Telnet、RDP、VNC、X11 Forwarding、WinRM 和 WebRTC,理解它们各自提供的远程交互能力。

计算机基础,开发实践1分钟阅读

远程访问常被概括成“连到另一台电脑”。建立连接以后,我们实际得到的入口可能是命令行、文件传输、完整桌面、单个图形窗口,也可能是浏览器里的实时音视频和数据通道。SSH、SFTP、RDP、VNC 和 WebRTC 都常出现在远程操作场景中,每种技术提供的交互能力各有侧重。

本文逐项介绍这些方法本身,并说明它们在服务器维护、远程桌面和机器人开发中的常见用途。

SSH(Secure Shell)用于安全地登录远端主机和使用其他网络服务。登录后,终端会连接到远端 Shell,我们可以运行命令、查看日志、启动程序和管理文件。SSH 还支持端口转发;SFTP、SCP 等文件传输工具也常与 SSH 配合使用。RFC 4251:SSH 协议架构

常见连接形式如下:

Terminal window
ssh 用户名@远程主机

例如:

Terminal window
ssh robot@192.168.1.20

SSH 适合管理 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 会进入交互模式:

Terminal window
sftp 用户名@远程主机

常用命令包括:

pwd # 查看远端当前目录
ls # 列出远端文件
lcd ~/Downloads # 更改本地目录
cd /var/log # 更改远端目录
get syslog ./syslog # 下载远端文件到本地
put ./config.yaml /tmp/ # 上传本地文件到远端
bye # 退出 SFTP

SSH 主要提供远端命令行会话,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。

这些技术提供不同的远程交互入口。确定要操作的是终端、桌面、单个程序还是实时媒体后,连接方式就容易选定。

© yznn007. 保留所有权利。