SSH连接服务器
本章节将指导你如何使用VS Code连接远程服务器,以及配置SSH密钥实现无密码登录。
为什么要用vscode
VS Code是一款功能强大的代码编辑器,支持多种编程语言,包括Python、JavaScript、TypeScript等。它提供了丰富的功能,如代码自动补全、代码重构、调试工具等,非常适合用于开发和调试代码。更重要的是未来大家会用到cursor来开发项目,所以大家需要提前适应vscode的开发环境。
为什么服务器往往是linux系统
想象一下,如果服务器是Windows系统,它可能会在关键时刻弹出"系统更新中,请勿关闭计算机"的提示,或者突然蓝屏给你一个"意外惊喜"。而Linux系统就像一位从不请假的管家,365天24小时稳定运行,让服务器保持最佳状态。
为什么选择Linux?数据告诉你真相
-
稳定性:Linux系统的平均无故障时间(MTBF)是Windows的10倍以上。根据Netcraft的调查,全球前100万的网站中,超过96%运行在Linux服务器上。
-
性能:Linux内核经过高度优化,在相同硬件条件下,Linux的Web服务器性能比Windows高出30-40%。而且Linux的内存管理更高效,可以同时处理更多并发请求。
-
成本:Linux是开源免费的,而Windows Server的授权费用可能高达数千美元。对于需要大量服务器的企业来说,这能节省一大笔开支。
-
安全性:Linux的权限管理更严格,病毒和恶意软件的数量远少于Windows。根据CVE数据库统计,Linux的安全漏洞数量仅为Windows的1/3。
为什么用终端而不是图形界面?
-
效率:在终端输入命令比用鼠标点击快得多。熟练的运维人员可以在几秒内完成图形界面需要几分钟的操作。
-
自动化:终端命令可以写成脚本,实现自动化管理。想象一下,用一条命令就能同时更新100台服务器,而图形界面需要逐台操作。
-
远程管理:通过SSH连接终端,即使网络带宽很低也能流畅操作。而远程图形界面不仅卡顿,还容易断线。
-
资源占用:图形界面会占用大量系统资源。在服务器上,每一分资源都很宝贵,应该留给真正重要的服务。
所以,虽然终端看起来像黑客电影里的黑屏绿字,但它其实是服务器管理的最佳工具。就像一位老司机说的:"图形界面是给新手用的,真正的老手都在终端里飞!"
服务器连接信息
在本课程中,我们将使用以下信息连接到服务器:
服务器连接信息
- 服务器地址:129.226.201.173
- 用户名:使用你的名字拼音(例如:
liuhetian
) - 密码:你的名字拼音加上
_hate_retype_password
(例如:liuhetian_hate_retype_password
) - 服务器操作系统:Ubuntu 24.04 LTS(是linux系统)
之后所有操作都是在服务器上进行,所以大家需要提前适应服务器上的操作环境。
SSH基础概念
SSH(Secure Shell)是一种加密的网络协议,用于在不安全的网络中安全地访问远程计算机。使用SSH可以:
- 远程登录到服务器
- 在远程服务器上执行命令
- 安全地传输文件
- 创建加密的隧道
配置SSH密钥实现无密码登录
使用SSH密钥可以更安全、更方便地登录服务器,无需每次输入密码。
生成SSH密钥对
所有操作系统通用步骤:
- 在VS Code中打开终端(顶部菜单栏 -> 终端 -> 新建终端)
- 输入以下命令生成密钥:
参数说明:
- -t rsa
: 指定密钥类型为RSA
- -b 4096
: 指定密钥长度为4096位(更安全)
- -C "你的邮箱地址"
: 添加注释,通常使用邮箱地址
- 系统会提示选择密钥保存位置,直接按Enter使用默认位置(~/.ssh/id_rsa)
- 系统会提示输入密码短语(passphrase),这是用于加密私钥的密码:
- 如果设置密码短语,每次使用密钥时都需要输入
- 如果不设置(直接按Enter),使用密钥时不需要额外输入密码
- 从安全角度,建议设置密码短语
完成后,会在~/.ssh/
目录下生成两个文件:
- id_rsa
:私钥,非常重要,切勿泄露
- id_rsa.pub
:公钥,用于配置到服务器上
将SSH公钥添加到服务器
方法一:使用ssh-copy-id(推荐,仅适用于macOS/Linux)
在VS Code终端中运行:
系统会提示输入服务器密码(你的名字拼音_hate_retype_password),验证成功后会自动将公钥添加到服务器。
方法二:手动添加(适用于所有操作系统)
- 在VS Code终端中查看并复制公钥内容:
Linux/macOS:
Windows:
-
仍在VS Code终端中,登录到远程服务器:
-
在服务器上创建/编辑授权密钥文件:
-
将公钥内容添加到authorized_keys文件:
测试SSH密钥登录
配置完成后,在VS Code终端中尝试再次登录服务器:
如果配置正确,系统将不再要求输入密码(如果设置了密码短语,则需要输入密码短语)。
在VS Code中使用SSH连接服务器
VS Code提供了两种方式连接远程服务器:通过内置终端或使用Remote-SSH扩展。
方法一:使用VS Code内置终端连接
- 打开VS Code
- 点击顶部菜单栏的"终端" -> "新建终端"
- 在打开的终端中输入SSH命令:
- 输入密码(你的名字拼音_hate_retype_password)或如果已配置SSH密钥,将自动登录
- 登录成功后,可以直接在终端中执行远程服务器上的命令
方法二:使用Remote-SSH扩展(推荐)
VS Code通过Remote-SSH扩展提供了优秀的远程开发体验,可以直接在本地VS Code中编辑和运行远程服务器上的文件。
- 确保已安装Remote-SSH扩展(如在第一章中未安装)
- 点击左侧活动栏中的远程资源管理器图标(><形状)
- 点击"+"按钮添加新的SSH目标或直接选择"Connect to Host..."
- 输入
你的名字拼音@129.226.201.173
- 首次连接会提示选择服务器平台类型(Linux、Windows等)
- 输入密码(你的名字拼音_hate_retype_password)或使用SSH密钥自动登录
- 连接成功后,VS Code将在远程服务器的环境中运行,你可以:
- 打开远程文件夹
- 编辑远程文件
- 使用VS Code终端直接在远程服务器上执行命令
- 使用调试器调试远程代码
配置SSH配置文件简化连接
可以创建SSH配置文件,简化连接过程并设置多个连接参数:
- 在VS Code中,点击远程资源管理器图标
- 点击齿轮图标打开SSH配置文件
- 在配置文件中添加服务器信息:
配置完成后:
- 可以直接在VS Code的远程资源管理器中点击已保存的服务器别名进行连接
- 在VS Code终端中可以使用简化命令:ssh 课程服务器
常见问题排查
- 连接被拒绝:检查用户名、服务器地址和端口是否正确
- 密钥权限问题:确保私钥文件权限正确(
chmod 600 ~/.ssh/id_rsa
) - 服务器SSH配置:某些服务器可能禁用了密码认证或密钥认证
- 防火墙问题:确保服务器防火墙允许SSH连接(通常是22端口)
- VS Code无法连接:检查Remote-SSH扩展是否正确安装,网络连接是否稳定
如何判断已成功连接到远程服务器
成功连接到远程服务器后,你会发现终端提示符发生了变化。这表明你现在正在远程服务器上操作,而不是在本地计算机上。
终端提示符变化
连接后(远程服务器):
这个提示符告诉你:
- (base)
- 当前激活的conda环境
- ~
- 当前所在的目录(~ 表示你的家目录)
- $
- 普通用户的命令提示符(如果是 #
则表示超级用户)
验证你在远程服务器上
你可以执行以下几个基础的Linux命令来确认你确实连接到了远程服务器:
-
查看当前目录内容:
这可能会显示类似如下的内容: -
查看当前工作目录:
这会显示你当前所在的目录路径,例如: -
查看服务器系统信息:
这会显示服务器的操作系统信息,与你本地计算机可能不同。 -
查看服务器IP地址:
这会显示服务器的IP地址,应当包含129.226.201.173
或内网IP。
理解远程执行的概念
重要的是要理解,当你通过SSH连接到远程服务器时:
- 所有命令都是在远程服务器上执行的,而不是在你的本地计算机上
- 你看到的文件和目录都是远程服务器上的,而不是你本地的
- 你的命令使用的是远程服务器的资源(CPU、内存、磁盘)
- 你安装的软件包会安装到远程服务器上,而不是你的本地计算机
这就是为什么SSH连接非常强大 - 它允许你完全控制远程服务器,就像坐在它面前操作一样,但实际上你可以从世界上任何有互联网连接的地方进行操作。
通过以上步骤,你已经学会了如何使用VS Code连接服务器以及配置SSH密钥实现无密码登录。下一章我们将学习如何使用Git克隆仓库。