游客
SSH是什么?主要功能有哪些?VScode使用ssh远程连接Ubuntu的详细步骤

SSH是什么?主要功能有哪些?VScode使用ssh远程连接Ubuntu的详细步骤

一言准备中...

SSH是什么?

SSH 全称 Secure Shell(安全外壳协议)。它通过加密方式在网络中实现远程登录、命令执行、文件传输。核心作用是在不安全的网络环境(比如互联网)里,为本地计算机和远程服务器之间建立加密通信通道,防止数据被窃听、篡改或伪造。

核心价值:解决“远程操作的安全性问题”

在 SSH 出现前,远程登录常用 Telnet,但数据是明文的(包括用户名、密码),黑客能直接监听获取。

SSH 通过多层加密技术解决:

  • 数据传输加密:所有通信内容(输入的命令、返回的结果)都被加密,截获也无法解读。
  • 身份认证保护:登录时的密码或验证信息通过加密方式传输,避免泄露。
  • 数据完整性校验:确保传输的数据没被中途篡改。

主要功能

  • 远程登录:通过 SSH 连接远程服务器(如 Ubuntu、CentOS),像操作本地电脑一样执行命令(安装软件、查看日志、管理文件)。输入 ssh 用户名@远程服务器IP 即可登录命令行界面。
  • 远程命令执行:不用登录远程服务器,直接在本地执行远程命令。比如 ssh 用户名@远程IP "ls /home" 能直接获取 /home 目录文件列表。
  • 安全文件传输:基于 SSH 衍生出 scpsftp 工具,安全传输文件(替代不安全的 FTP)。scp 本地文件路径 用户名@远程IP:远程目录 可上传文件。
  • 端口转发:通过 SSH 建立“加密隧道”,把远程服务器的某个端口(如数据库端口)映射到本地,安全访问内网服务。

使用要求

本地环境

  • Visual Studio Code:已安装能稳定使用的 VS Code。
  • Remote - SSH 扩展:在扩展市场搜索安装 ms-vscode-remote.remote-ssh,这是远程连接的核心组件。

远程环境 (Ubuntu 服务器)

  • Ubuntu 服务器:拥有一个具有 sudo 权限的用户账户。
  • OpenSSH 服务器:必须安装并运行 openssh-server。检查状态:sudo systemctl status ssh。如果没运行或没安装,执行:
    sudo apt update
    sudo apt install openssh-server
    sudo systemctl start ssh
    sudo systemctl enable ssh
    
  • 网络连通性:本地计算机必须能通过网络访问远程服务器的 IP 地址或域名。确保防火墙(如 ufw)放行 SSH 端口(默认 22)。

核心优势

VS Code 通过 SSH 远程连接 Ubuntu,本质是把本地 VS Code 当作“前端编辑器”,直接操作远程 Ubuntu 的代码、环境和资源。

本地熟悉的开发体验,避免远程命令行的低效

Ubuntu 服务器通常只有命令行(CLI),用 vim/nano 编辑代码对习惯图形化界面的开发者不友好,也缺 VS Code 的插件生态(语法高亮、代码补全、调试工具、Git 集成等)。

通过 SSH 连接后:

  • 完全复用本地 VS Code 配置:插件、快捷键、主题、用户设置全部同步,不用在远程重新配置。
  • 图形化操作远程文件:像操作本地文件一样,通过「资源管理器」浏览、创建、修改远程文件/文件夹,支持拖拽、右键菜单。
  • 可视化调试远程程序:直接在本地 VS Code 设置断点、单步执行远程程序(如 Python 脚本、Node.js 服务),不用在终端用 gdb 等命令行工具。

消除本地与远程环境不一致的痛点

常见问题:“本地代码能跑,部署到 Ubuntu 服务器就报错”,根源是环境差异(Python 版本、依赖库、系统变量、权限配置等)。

通过 SSH 远程开发时:

  • 直接使用远程 Ubuntu 的开发环境:代码的编译、运行、依赖安装都在远程执行,完全贴合部署环境,从根源上避免兼容性问题。
  • 不用在本地模拟 Linux 环境:不需要安装虚拟机(VirtualBox)或 WSL(Windows Subsystem for Linux),节省本地磁盘空间和内存,也避免繁琐的文件共享、网络配置。

如何使用

建立 SSH 连接

  1. 准备工作完成后,VS Code 侧边栏会出现 Remote Explorer 图标。
  2. ifconfig 查看 Ubuntu 的 IP 地址和用户名。
  3. 点击侧边栏的 Remote Explorer,选择“SSH Targets”下的“+”号。
  4. 按格式输入:ssh username@remote_host(替换成你的用户名和 IP 地址),回车。
    • 如果改了 SSH 端口(不是 22),用:ssh -p port_number username@remote_host
  5. 选择保存配置的文件(一般选 ~/.ssh/config)。
  6. 右下角弹出“打开配置”选项,确认配置正确后保存(Ctrl+S)并退出。
  7. 在 SSH 目标列表中看到你的主机。
  8. 选择连接窗口(当前窗口或新窗口)。
  9. 输入 Ubuntu 密码。
  10. 连接成功,状态栏显示“SSH: 主机名”。

关闭连接

点击 VS Code 左下角状态栏的远程连接区域,选择“关闭远程连接”。

删除 SSH 连接

在 Remote Explorer 的 SSH 目标列表,右键目标主机,选择“删除”。

SSH 连接服务器实操

1. 基础连接

  • 获取服务器信息:IP 地址(如 123.123.123.123)、登录账户(如 root 或 ubuntu)。
  • 执行连接命令:ssh <账户名>@<IP地址>(示例:ssh root@123.123.123.123)。
  • 输入密码。
  • 退出连接:按 Ctrl/Command + D 或输入 exit

2. 为服务器设置别名

用简短别名(如 myserver)替代复杂 IP 地址。

  • 创建配置文件:touch ~/.ssh/config(如果文件不存在)。
  • 编辑配置:
    Host myserver
        HostName 123.123.123.123
        User root
    
  • 使用别名连接:ssh myserver

3. 配置免密登录

原理:客户端存私钥,服务端存公钥。

  • 生成密钥对(客户端执行)ssh-keygen [-t ed25519](按提示设置保存路径和密码,不配置会有默认算法)。默认生成 ~/.ssh/id_ed25519(私钥)和 id_ed25519.pub(公钥)。
  • 权限检查chmod 600 ~/.ssh/id_ed25519(建议设置私钥权限)。
  • 上传公钥到服务器ssh-copy-id myserver(或手动复制公钥内容到服务器的 ~/.ssh/authorized_keys)。
  • 服务器端权限设置
    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys
    
  • 验证免密登录ssh myserver(无需输入密码直接进入)。

同类竞品对比

对比维度 SSH + VS Code Remote-SSH Telnet FTP 传统虚拟机 (如 VirtualBox)
功能范围 远程登录、命令执行、文件传输、端口转发、图形化代码编辑与调试 仅远程登录,无加密 仅文件传输,无远程命令执行 完整操作系统模拟,可运行图形界面,但资源消耗大
数据传输 全链路加密(AES、ChaCha20等),数据完整性校验 明文传输,无加密 明文传输,无加密(FTPS有加密但配置复杂) 取决于网络协议,通常不加密
身份认证 密码认证、公钥认证(支持 ed25519/RSA)、双因素认证 仅明文密码认证 明文密码认证,部分支持密钥 取决于远程桌面协议(如 RDP),支持 NLA 加密
文件传输 内置 scp/sftp,支持拖拽操作,集成在 VS Code 资源管理器 不支持 支持,但需额外客户端,安全性差 需配置共享文件夹或网络映射
开发体验 图形化编辑器、插件生态、断点调试、终端集成,本地化操作 纯命令行,无图形界面 无编辑能力 需安装完整操作系统和 IDE,资源占用高
环境一致性 直接使用远程服务器环境,完全一致 虚拟机环境需手动配置,可能与生产环境有差异
资源占用 极低,仅占用 VS Code 和网络带宽 极低 高,需分配 CPU、内存、磁盘空间
适用场景 服务器开发、云服务器管理、多设备协作 已淘汰,不推荐使用 简单的文件上传下载(不推荐用于敏感数据) 需要完整桌面环境或测试不同操作系统

应用场景

  • 服务器开发:直接在远程 Ubuntu 服务器上编写、调试代码,适合后端开发、运维脚本编写。
  • 云服务器管理:日常管理云服务器(如 AWS EC2、阿里云 ECS),执行系统更新、日志查看、服务配置等。
  • 多设备协作:在办公室台式机、笔记本、家庭电脑间共享同一开发环境,代码和工具链完全一致。
  • 本地环境受限:当本地电脑性能不足(内存小、硬盘空间少)或系统不兼容(如 Windows 上开发 Linux 应用)时,使用远程服务器作为开发主力。

适用人群

  • 后端开发者:需要频繁操作 Linux 服务器,部署和调试应用。
  • 运维工程师:管理多台服务器,执行自动化脚本和监控。
  • 数据科学家/机器学习工程师:在远程 GPU 服务器上运行训练任务,本地编写和调试代码。
  • 学生/研究人员:在实验室或云服务器上进行项目开发,避免本地环境配置问题。
  • 任何需要在远程 Linux 环境编写代码的用户:追求本地化开发体验,同时避免环境不一致问题。
  • 本文作者:站长
  • 本文链接: https://www.zhujishice.cn/195.html
  • 版权声明:本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 4.0 许可协议。
0
0
  • 支付宝打赏
    支付宝扫一扫
  • 微信打赏
    微信扫一扫
感谢支持
文章很赞!支持一下吧
关于作者
106
0
0
0
内卷太严重,已躺平...

Ubuntu服务器管理面板功能解析

上一篇

Xshell 8 公钥私钥登录全流程与连接故障排查

下一篇
评论区
内容为空

这一切,似未曾拥有

  • 复制图片
按住ctrl可打开默认菜单