跳转至

SSH连接服务器

本章节将指导你如何使用VS Code连接远程服务器,以及配置SSH密钥实现无密码登录。

为什么要用vscode

VS Code是一款功能强大的代码编辑器,支持多种编程语言,包括Python、JavaScript、TypeScript等。它提供了丰富的功能,如代码自动补全、代码重构、调试工具等,非常适合用于开发和调试代码。更重要的是未来大家会用到cursor来开发项目,所以大家需要提前适应vscode的开发环境。

为什么服务器往往是linux系统

想象一下,如果服务器是Windows系统,它可能会在关键时刻弹出"系统更新中,请勿关闭计算机"的提示,或者突然蓝屏给你一个"意外惊喜"。而Linux系统就像一位从不请假的管家,365天24小时稳定运行,让服务器保持最佳状态。

为什么选择Linux?数据告诉你真相

  1. 稳定性:Linux系统的平均无故障时间(MTBF)是Windows的10倍以上。根据Netcraft的调查,全球前100万的网站中,超过96%运行在Linux服务器上。

  2. 性能:Linux内核经过高度优化,在相同硬件条件下,Linux的Web服务器性能比Windows高出30-40%。而且Linux的内存管理更高效,可以同时处理更多并发请求。

  3. 成本:Linux是开源免费的,而Windows Server的授权费用可能高达数千美元。对于需要大量服务器的企业来说,这能节省一大笔开支。

  4. 安全性:Linux的权限管理更严格,病毒和恶意软件的数量远少于Windows。根据CVE数据库统计,Linux的安全漏洞数量仅为Windows的1/3。

为什么用终端而不是图形界面?

  1. 效率:在终端输入命令比用鼠标点击快得多。熟练的运维人员可以在几秒内完成图形界面需要几分钟的操作。

  2. 自动化:终端命令可以写成脚本,实现自动化管理。想象一下,用一条命令就能同时更新100台服务器,而图形界面需要逐台操作。

  3. 远程管理:通过SSH连接终端,即使网络带宽很低也能流畅操作。而远程图形界面不仅卡顿,还容易断线。

  4. 资源占用:图形界面会占用大量系统资源。在服务器上,每一分资源都很宝贵,应该留给真正重要的服务。

所以,虽然终端看起来像黑客电影里的黑屏绿字,但它其实是服务器管理的最佳工具。就像一位老司机说的:"图形界面是给新手用的,真正的老手都在终端里飞!"

服务器连接信息

在本课程中,我们将使用以下信息连接到服务器:

服务器连接信息

  • 服务器地址: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密钥对

所有操作系统通用步骤:

  1. 在VS Code中打开终端(顶部菜单栏 -> 终端 -> 新建终端)
  2. 输入以下命令生成密钥:
    ssh-keygen -t rsa -b 4096 -C "你的邮箱地址"
    

参数说明: - -t rsa: 指定密钥类型为RSA - -b 4096: 指定密钥长度为4096位(更安全) - -C "你的邮箱地址": 添加注释,通常使用邮箱地址

  1. 系统会提示选择密钥保存位置,直接按Enter使用默认位置(~/.ssh/id_rsa)
  2. 系统会提示输入密码短语(passphrase),这是用于加密私钥的密码:
  3. 如果设置密码短语,每次使用密钥时都需要输入
  4. 如果不设置(直接按Enter),使用密钥时不需要额外输入密码
  5. 从安全角度,建议设置密码短语

完成后,会在~/.ssh/目录下生成两个文件: - id_rsa:私钥,非常重要,切勿泄露 - id_rsa.pub:公钥,用于配置到服务器上

将SSH公钥添加到服务器

方法一:使用ssh-copy-id(推荐,仅适用于macOS/Linux)

在VS Code终端中运行:

ssh-copy-id 你的名字拼音@129.226.201.173

系统会提示输入服务器密码(你的名字拼音_hate_retype_password),验证成功后会自动将公钥添加到服务器。

方法二:手动添加(适用于所有操作系统)

  1. 在VS Code终端中查看并复制公钥内容:

Linux/macOS:

cat ~/.ssh/id_rsa.pub

Windows:

type C:\Users\你的用户名\.ssh\id_rsa.pub

  1. 仍在VS Code终端中,登录到远程服务器:

    ssh 你的名字拼音@129.226.201.173
    

  2. 在服务器上创建/编辑授权密钥文件:

    mkdir -p ~/.ssh
    touch ~/.ssh/authorized_keys
    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys
    

  3. 将公钥内容添加到authorized_keys文件:

    echo "你的公钥内容" >> ~/.ssh/authorized_keys
    

测试SSH密钥登录

配置完成后,在VS Code终端中尝试再次登录服务器:

ssh 你的名字拼音@129.226.201.173

如果配置正确,系统将不再要求输入密码(如果设置了密码短语,则需要输入密码短语)。

在VS Code中使用SSH连接服务器

VS Code提供了两种方式连接远程服务器:通过内置终端或使用Remote-SSH扩展。

方法一:使用VS Code内置终端连接

  1. 打开VS Code
  2. 点击顶部菜单栏的"终端" -> "新建终端"
  3. 在打开的终端中输入SSH命令:
    ssh 你的名字拼音@129.226.201.173
    
  4. 输入密码(你的名字拼音_hate_retype_password)或如果已配置SSH密钥,将自动登录
  5. 登录成功后,可以直接在终端中执行远程服务器上的命令

方法二:使用Remote-SSH扩展(推荐)

VS Code通过Remote-SSH扩展提供了优秀的远程开发体验,可以直接在本地VS Code中编辑和运行远程服务器上的文件。

  1. 确保已安装Remote-SSH扩展(如在第一章中未安装)
  2. 点击左侧活动栏中的远程资源管理器图标(><形状)
  3. 点击"+"按钮添加新的SSH目标或直接选择"Connect to Host..."
  4. 输入你的名字拼音@129.226.201.173
  5. 首次连接会提示选择服务器平台类型(Linux、Windows等)
  6. 输入密码(你的名字拼音_hate_retype_password)或使用SSH密钥自动登录
  7. 连接成功后,VS Code将在远程服务器的环境中运行,你可以:
  8. 打开远程文件夹
  9. 编辑远程文件
  10. 使用VS Code终端直接在远程服务器上执行命令
  11. 使用调试器调试远程代码

配置SSH配置文件简化连接

可以创建SSH配置文件,简化连接过程并设置多个连接参数:

  1. 在VS Code中,点击远程资源管理器图标
  2. 点击齿轮图标打开SSH配置文件
  3. 在配置文件中添加服务器信息:
    Host 课程服务器
        HostName 129.226.201.173
        User 你的名字拼音
        Port 22
        IdentityFile ~/.ssh/id_rsa
    

配置完成后: - 可以直接在VS Code的远程资源管理器中点击已保存的服务器别名进行连接 - 在VS Code终端中可以使用简化命令:ssh 课程服务器

常见问题排查

  1. 连接被拒绝:检查用户名、服务器地址和端口是否正确
  2. 密钥权限问题:确保私钥文件权限正确(chmod 600 ~/.ssh/id_rsa
  3. 服务器SSH配置:某些服务器可能禁用了密码认证或密钥认证
  4. 防火墙问题:确保服务器防火墙允许SSH连接(通常是22端口)
  5. VS Code无法连接:检查Remote-SSH扩展是否正确安装,网络连接是否稳定

如何判断已成功连接到远程服务器

成功连接到远程服务器后,你会发现终端提示符发生了变化。这表明你现在正在远程服务器上操作,而不是在本地计算机上。

终端提示符变化

连接后(远程服务器):

(base) :~$ 

这个提示符告诉你: - (base) - 当前激活的conda环境 - ~ - 当前所在的目录(~ 表示你的家目录) - $ - 普通用户的命令提示符(如果是 # 则表示超级用户)

验证你在远程服务器上

你可以执行以下几个基础的Linux命令来确认你确实连接到了远程服务器:

  1. 查看当前目录内容

    ls
    
    这可能会显示类似如下的内容:
    (base) :~$ ls
    2025  miniconda3  setup_environment.sh
    

  2. 查看当前工作目录

    pwd
    
    这会显示你当前所在的目录路径,例如:
    (base) :~$ pwd
    /home/你的名字拼音
    

  3. 查看服务器系统信息

    uname -a
    
    这会显示服务器的操作系统信息,与你本地计算机可能不同。

  4. 查看服务器IP地址

    hostname -I
    
    这会显示服务器的IP地址,应当包含129.226.201.173或内网IP。

理解远程执行的概念

重要的是要理解,当你通过SSH连接到远程服务器时:

  • 所有命令都是在远程服务器上执行的,而不是在你的本地计算机上
  • 你看到的文件和目录都是远程服务器上的,而不是你本地的
  • 你的命令使用的是远程服务器的资源(CPU、内存、磁盘)
  • 你安装的软件包会安装到远程服务器上,而不是你的本地计算机

这就是为什么SSH连接非常强大 - 它允许你完全控制远程服务器,就像坐在它面前操作一样,但实际上你可以从世界上任何有互联网连接的地方进行操作。

通过以上步骤,你已经学会了如何使用VS Code连接服务器以及配置SSH密钥实现无密码登录。下一章我们将学习如何使用Git克隆仓库。