韦家东 發表於 2025-12-14 00:00:00

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

<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li>一、SSH<ul class="second_class_ul"><li>SSH是什么?</li><li>SSH 的核心价值:解决&ldquo;远程操作的安全性问题&rdquo;</li><li>SSH 的主要功能</li></ul></li><li>二、vscode使用SSH连接Ubuntu的优势<ul class="second_class_ul"><li>本地熟悉的开发体验,避免远程命令行的低效</li><li>消除本地与远程环境不一致的痛点</li></ul></li><li>三、准备工作<ul class="second_class_ul"><li>本地环境</li><li>远程环境 (Ubuntu 服务器)</li></ul></li><li>四、建立 SSH 连接<ul class="second_class_ul"></ul></li><li>五、总结<ul class="second_class_ul"></ul></li><li>SSH连接服务器实操<ul class="second_class_ul"><li>1. 基础连接</li><li>2. 为服务器设置别名</li><li>3. 配置免密登录</li></ul></li></ul></div><p class="maodian"></p><h2>一、SSH</h2>
<p class="maodian"></p><h3>SSH是什么?</h3>
<p>SSH 全称 <strong>Secure Shell(安全外壳协议)</strong>,是一种通过加密方式在网络中实现<strong>远程登录、命令执行、文件传输</strong>等操作的网络协议。它的核心作用是在不安全的网络环境(如互联网)中,为两台设备(通常是本地计算机和远程服务器)之间建立<strong>加密的通信通道</strong>,防止数据传输过程中被窃听、篡改或伪造。</p>
<p class="maodian"></p><h3>SSH 的核心价值:解决&ldquo;远程操作的安全性问题&rdquo;</h3>
<p>在 SSH 出现之前,远程登录常用的协议是 Telnet,但 Telnet 传输的数据是<strong>明文</strong>的(包括用户名、密码、操作指令等),黑客可以通过监听网络轻松获取这些信息,风险极高。</p>
<p>SSH 则通过<strong>多层加密技术</strong>解决了这个问题:</p>
<p><strong>数据传输加密</strong>:所有通信内容(如输入的命令、返回的结果)都会被加密,即使被截获也无法直接解读。 <strong>身份认证保护</strong>:登录时的密码或验证信息会通过加密方式传输,避免泄露。 <strong>数据完整性校验</strong>:确保传输的数据未被中途篡改。</p>
<p class="maodian"></p><h3>SSH 的主要功能</h3>
<p><strong>远程登录</strong>:通过 SSH 连接远程服务器(如 Ubuntu、CentOS 等 Linux 服务器),像操作本地电脑一样在远程服务器上执行命令(如安装软件、查看日志、管理文件等)。<br />例:在本地终端输入 ssh 用户名@远程服务器IP,即可登录远程服务器的命令行界面。</p>
<p><strong>远程命令执行</strong>:无需登录远程服务器,直接在本地执行远程服务器上的命令。<br />例:ssh 用户名@远程IP &quot;ls /home&quot; 可直接获取远程服务器 /home 目录下的文件列表。</p>
<p><strong>安全文件传输</strong>:基于 SSH 协议衍生出的 scp(Secure Copy)和 sftp(SSH File Transfer Protocol)工具,可安全地在本地和远程服务器之间传输文件(替代不安全的 FTP 协议)。<br />例:scp 本地文件路径 用户名@远程IP:远程目录 可将本地文件上传到远程服务器。</p>
<p><strong>端口转发</strong>:通过 SSH 建立&ldquo;加密隧道&rdquo;,将远程服务器的某个端口(如数据库端口、Web 服务端口)映射到本地,实现安全访问(常用于访问内网服务)。</p>
<p class="maodian"></p><h2>二、vscode使用SSH连接Ubuntu的优势</h2>
<p>使用 VS Code 通过 SSH 远程连接 Ubuntu(Linux 系统),本质是将本地 VS Code 作为「前端编辑器」,直接操作远程 Ubuntu 上的代码、环境和资源,其核心优势围绕<strong>开发体验统一、环境一致性、安全性</strong>等维度展开,尤其适合服务器开发、多设备协作或本地环境受限的场景。</p>
<p class="maodian"></p><h3>本地熟悉的开发体验,避免远程命令行的低效</h3>
<p>Ubuntu 服务器通常以命令行(CLI)为主,直接在终端用 vim/nano 编辑代码对习惯图形化界面的开发者不够友好,且缺乏 VS Code 强大的插件生态(如语法高亮、代码补全、调试工具、Git 集成等)。<br />通过 SSH 远程连接后:</p>
<p><strong>完全复用本地 VS Code 配置</strong>:插件(如 Python 插件、Go 插件、ESLint)、快捷键、主题、用户设置(如缩进、代码格式化规则)全部同步,无需在远程 Ubuntu 重新配置。 <strong>图形化操作远程文件</strong>:像操作本地文件一样,通过 VS Code 的「资源管理器」浏览、创建、修改远程 Ubuntu 上的文件/文件夹,支持拖拽、右键菜单(如「新建终端」「运行代码」)。 <strong>可视化调试远程程序</strong>:直接在本地 VS Code 中设置断点、单步执行远程 Ubuntu 上运行的程序(如 Python 脚本、Node.js 服务),无需在终端用 gdb 等命令行调试工具,降低调试门槛。</p>
<p class="maodian"></p><h3>消除本地与远程环境不一致的痛点</h3>
<p>开发中常见问题:「本地代码能跑,部署到 Ubuntu 服务器就报错」,根源是本地(如 Windows/macOS)与远程 Ubuntu 的环境差异(如 Python 版本、依赖库版本、系统变量、权限配置等)。<br />通过 SSH 远程开发时:</p>
<p><strong>直接使用远程 Ubuntu 的开发环境</strong>:代码的编译、运行、依赖安装(如 apt install/pip install)均在远程 Ubuntu 中执行,完全贴合最终部署环境,从根源上避免「环境不一致」导致的兼容性问题。 <strong>无需在本地模拟 Linux 环境</strong>:无需在本地安装虚拟机(如 VirtualBox)或 WSL(Windows Subsystem for Linux)来模拟 Ubuntu,节省本地磁盘空间和内存占用,同时避免虚拟机与主机的文件共享、网络配置等繁琐操作。</p>
<p class="maodian"></p><h2>三、准备工作</h2>
<p>在开始之前,请确保您的本地与远程环境满足以下基本要求:</p>
<p class="maodian"></p><h3>本地环境</h3>
<p><strong>Visual Studio Code</strong>: 已安装能稳定使用的 VS Code。 <strong>Remote - SSH 扩展</strong>: 在 VS Code 扩展市场中搜索并安装 ms-vscode-remote.remote-ssh。这是实现远程连接的核心组件。<br /><img alt="在这里插入图片描述" src="https://zhuji.jb51.net/uploads/allimg/20251212/2-2512121F11UX.png" /></p>
<p class="maodian"></p><h3>远程环境 (Ubuntu 服务器)</h3>
<p><strong>一台 Ubuntu 服务器</strong>: 拥有一个具有 sudo 权限的用户账户。</p>
<p><strong>OpenSSH 服务器</strong>: 服务器上必须安装并运行 openssh-server。您可以通过以下命令检查其状态:</p>
<div class="dxycode"><pre class="brush:bash;">sudo systemctl status ssh</pre></div>
<p>如果服务未运行或未安装,请执行:</p>
<div class="dxycode"><pre class="brush:bash;"># 安装 OpenSSH Server
sudo apt update
sudo apt install openssh-server
# 启动并设置为开机自启
sudo systemctl start ssh
sudo systemctl enable ssh</pre></div>
<p><img alt="远程环境 (Ubuntu 服务器)" src="https://zhuji.jb51.net/uploads/allimg/20251212/2-2512121F119441.png" /></p>
<p><strong>网络连通性</strong>: 您的本地计算机必须能够通过网络访问到远程服务器的 IP 地址或域名。请确保防火墙(如 ufw)已放行 SSH 端口(默认为 22)。</p>
<p class="maodian"></p><h2>四、建立 SSH 连接</h2>
<p>1、准备工作正确完成后我们会看见vscode中侧边栏多出了一个图标</p>
<p><img alt="建立 SSH 连接" src="https://zhuji.jb51.net/uploads/allimg/20251212/2-2512121F119521.png" /></p>
<p>2、使用ifconfig查看Ubuntu的IP地址h和用户名</p>
<p><img alt="建立 SSH 连接_图2" src="https://zhuji.jb51.net/uploads/allimg/20251212/2-2512121F119143.png" /></p>
<p>3、vscode中ssh连接Ubuntu</p>
<p><img alt="建立 SSH 连接_图3" src="https://zhuji.jb51.net/uploads/allimg/20251212/2-2512121F11a36.png" /></p>
<p>4、按格式输入用户名以及IP地址用于连接</p>
<div class="dxycode"><pre class="brush:bash;">ssh username@remote_host</pre></div>
<p>其中username是用户名,remote_host是Ubuntu的IPV4地址,记得替换成你自己的相关信息,输入完成后点击回车</p>
<p><img alt="建立 SSH 连接_图4" src="https://zhuji.jb51.net/uploads/allimg/20251212/2-2512121F11c94.png" /></p>
<p>如果n你没有对ssh默认端口进行修改,跳过此步,如果你切换了端口,让默认端口不是22,则你可以使用下面这个命令设置端口为你修改的ssh端口。其他部分与上面相同</p>
<div class="dxycode"><pre class="brush:bash;">ssh -p port_number username@remote_host</pre></div>
<p>5、选择一个文件保存配置</p>
<p><img alt="建立 SSH 连接_图5" src="https://zhuji.jb51.net/uploads/allimg/20251212/2-2512121F119348.png" /></p>
<p>6、右下角回弹出打开配置选项,可以打开配置文件查看是否你的Ubuntu的用户名和IP地址被正确添加到配置文件,确认后保存(ctrl+s)并退出</p>
<p><img alt="建立 SSH 连接_图6" src="https://zhuji.jb51.net/uploads/allimg/20251212/2-2512121F120B6.png" /></p>
<p>7、确认配置中包含了你的Ubuntu信息后就可以看到SSH下面已经有你的主机了</p>
<p><img alt="建立 SSH 连接_图7" src="https://zhuji.jb51.net/uploads/allimg/20251212/2-2512121F120T5.png" /><br />8、选择连接所在窗口</p>
<p><img alt="建立 SSH 连接_图8" src="https://zhuji.jb51.net/uploads/allimg/20251212/2-2512121F120403.png" /></p>
<p>9、输入Ubuntu密码</p>
<p><img alt="建立 SSH 连接_图9" src="https://zhuji.jb51.net/uploads/allimg/20251212/2-2512121F120131.png" /></p>
<p>10、连接成功<br /><img alt="建立 SSH 连接_图10" src="https://zhuji.jb51.net/uploads/allimg/20251212/2-2512121F1201D.png" /></p>
<p>11、关闭连接<br /><img alt="建立 SSH 连接_图11" src="https://zhuji.jb51.net/uploads/allimg/20251212/2-2512121F120J7.png" /></p>
<p>12、删除SSH连接</p>
<p><img alt="建立 SSH 连接_图12" src="https://zhuji.jb51.net/uploads/allimg/20251212/2-2512121F121W6.png" /></p>
<p class="maodian"></p><h2>五、总结</h2>
<p>通过 Remote - SSH 扩展,VS Code 极大地简化了远程开发的复杂性,提供了一种近乎本地的开发体验。它将强大的编辑器功能与服务器的计算能力完美结合,构成了现代、高效的开发工作流。掌握本文所述的配置方法与最佳实践,将使您能够更加从容地驾驭任何远程开发场景。</p>
<p class="maodian"></p><h2>SSH连接服务器实操</h2>
<p class="maodian"></p><h3>1. 基础连接</h3>
<ul><li><strong>获取服务器信息</strong>:
<ul><li>IP地址(如&nbsp;123.123.123.123)</li><li>登录账户(如&nbsp;root&nbsp;或&nbsp;ubuntu)</li></ul></li><li><strong>执行连接命令</strong>:</li></ul>
<div class="dxycode"><div class="dxycode"><pre class="brush:xhtml brush:bash;">ssh &amp;lt;账户名&amp;gt;@&amp;lt;IP地址&amp;gt;
# 示例:ssh root@123.123.123.123</pre></div></div>
<ul><li><strong>输入密码</strong>:根据提示输入账户密码。</li><li><strong>退出连接</strong>:按&nbsp;Ctrl/Command&nbsp;+ D&nbsp;或输入&nbsp;exit。</li></ul>
<p class="maodian"></p><h3>2. 为服务器设置别名</h3>
<p><strong>目的</strong>:用简短别名(如&nbsp;myserver)替代复杂IP地址。</p>
<p><strong>创建配置文件</strong>:</p>
<div class="dxycode"><div class="dxycode"><pre class="brush:xhtml brush:bash;">touch ~/.ssh/config   # 若文件不存在则新建</pre></div></div>
<p><strong>编辑配置</strong>:</p>
<div class="dxycode"><div class="dxycode"><pre class="brush:xhtml brush:bash;">Host myserver         # 自定义别名
HostName 123.123.123.123# 服务器IP
User root         # 登录账户</pre></div></div>
<p><strong>使用别名连接</strong>:</p>
<div class="dxycode"><div class="dxycode"><pre class="brush:xhtml brush:bash;">ssh myserver</pre></div></div>
<p class="maodian"></p><h3>3. 配置免密登录</h3>
<p><strong>原理</strong>:客户端存私钥,服务端存公钥。</p>
<p><strong>生成密钥对</strong>(客户端执行):</p>
<div class="dxycode"><div class="dxycode"><pre class="brush:xhtml brush:bash;">ssh-keygen [-t ed25519]# 按提示设置保存路径和密码(可选)
# 方括号中的内容可选,不进行配置会有一个默认算法</pre></div></div>
<ul><li>默认生成文件:~/.ssh/id_ed25519(私钥)和&nbsp;id_ed25519.pub(公钥)。</li></ul>
<p><strong>权限检查</strong>:</p>
<div class="dxycode"><div class="dxycode"><pre class="brush:xhtml brush:bash;">chmod 600 ~/.ssh/id_ed25519# 建议设置私钥权限!</pre></div></div>
<p><strong>上传公钥到服务器</strong>:</p>
<div class="dxycode"><div class="dxycode"><pre class="brush:xhtml brush:bash;">ssh-copy-id myserver# 或手动复制公钥内容到服务器的 ~/.ssh/authorized_keys</pre></div></div>
<p><strong>服务器端权限设置</strong>:</p>
<div class="dxycode"><div class="dxycode"><pre class="brush:xhtml brush:bash;">chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys</pre></div></div>
<p><strong>验证免密登录</strong>:</p>
<div class="dxycode"><div class="dxycode"><pre class="brush:xhtml brush:bash;">ssh myserver# 无需输入密码直接进入</pre></div></div>
<p>以上就是SSH是什么?主要功能有哪些?VScode使用ssh远程连接Ubuntu的详细步骤的详细内容,更多相关资料请阅读琼殿技术社区其它文章!</p>
頁: [1]
查看完整版本: SSH是什么?主要功能有哪些?VScode使用ssh远程连接Ubuntu的详细步骤