【无标题】

🛠️ 第一步:在本地生成 SSH 密钥对

打开你电脑的终端(Windows 用 PowerShell / CMD,Mac/Linux 用自带终端),执行下面的命令:

bash 复制代码
ssh-keygen -t ed25519
  • 按回车确认保存路径(默认 ~/.ssh/id_ed25519 即可)
  • 提示输入 passphrase(密钥密码)时,直接按两次回车留空(这样才是完全免密码;如果设置了 passphrase,还是要输一次密钥密码)
  • 第一次回车:默认保存位置,不用改
  • 第二次回车:不设密钥密码
  • 第三次回车:确认不设密码

第一次弹窗提示:Enter file in which to save the key:

意思:**问你密钥存在哪个位置。**直接回车 = 用默认位置,不用自己乱改路径

第二次弹窗提示:Enter passphrase (empty for no passphrase):

这个不是服务器密码! 这是给你的私钥再加一层解锁密码。

👉 直接回车 = 不给私钥再加密码,以后连服务器全自动免密。

第三次弹窗提示:Enter same passphrase again:

👉 再确认一次,继续回车 = 确认私钥不设密码

执行完,你会得到两个文件:

  • 私钥:~/.ssh/id_ed25519(本地保存,绝对不能泄露)
  • 公钥:~/.ssh/id_ed25519.pub(要上传到服务器)

📤 第二步:把公钥上传到服务器

执行下面的命令,把公钥传到你的服务器(替换成你自己的用户名和 IP):

bash 复制代码
ssh-copy-id lqq@10.176.56.231
  • 第一次执行,还是要输入一次服务器的密码
  • 执行成功后,公钥就会自动添加到服务器的 ~/.ssh/authorized_keys 里了

执行时会发生什么?

  1. 它会自动连接服务器,并把你刚生成的公钥(锁芯)上传上去
  2. 第一次执行,会让你输入服务器原来的登录密码(就是你平时登录用的那个)
  3. 输入密码后回车,它会自动把公钥添加到服务器的白名单里

如果你的系统没有 ssh-copy-id 命令,可以手动上传:

bash 复制代码
type C:\Users\qqqqq\.ssh\id_ed25519.pub | ssh lqq@10.176.56.231 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

或者

bash 复制代码
# 1. 先登录服务器,创建 .ssh 目录(如果不存在)
ssh lqq@10.176.56.231 "mkdir -p ~/.ssh && chmod 700 ~/.ssh"

# 2. 把本地公钥追加到服务器的 authorized_keys 文件里
cat ~/.ssh/id_ed25519.pub | ssh lqq@10.176.56.231 "cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

两个命令二选一即可。

两个命令的最终效果完全一样,都是把你的公钥安全地上传到服务器并配置好免密登录。区别只是「写法不同」。

第一条命令是一条命令搞定,直接在本地执行,不用分步,适合 Windows 系统。

第二条命令是分两条命令,逻辑上更清晰,先建目录再追加公钥,适合 Linux/Mac 系统,或者想分步确认每一步是否成功的情况。

方案 1:一条命令的完整流程

bash 复制代码
type C:\Users\qqqqq\.ssh\id_ed25519.pub | ssh lqq@10.176.56.231 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

这条命令里,每一部分都有明确分工:

  1. type C:\Users\qqqqq\.ssh\id_ed25519.pub (Windows 命令,相当于 Linux 的 cat)把你本地的公钥文件内容读取出来,准备传给服务器。

  2. |(管道符) 把前面读取到的公钥内容,传给后面的 ssh 命令。

  3. **ssh lqq@10.176.56.231 "..."**远程登录服务器,并执行引号里的命令:

    • mkdir -p ~/.ssh:如果服务器上没有 .ssh 目录,就创建它;如果已经有了,也不会报错。
    • cat >> ~/.ssh/authorized_keys:把管道传过来的公钥内容,追加到服务器的 authorized_keys 文件里(如果文件不存在,会自动创建)。
    • chmod 600 ~/.ssh/authorized_keys:给这个文件设置权限,确保只有你自己能读写,SSH 才会认这个文件。

方案 2:分两步的写法(Linux/Mac 常用)

bash 复制代码
# 1. 先登录服务器,创建 .ssh 目录
ssh lqq@10.176.56.231 "mkdir -p ~/.ssh && chmod 700 ~/.ssh"

# 2. 把本地公钥追加到服务器的 authorized_keys 文件里
cat ~/.ssh/id_ed25519.pub | ssh lqq@10.176.56.231 "cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

它和方案 1 的逻辑完全一致,只是把一个命令拆成了两个:

  1. 第一步 ssh "mkdir -p ~/.ssh && chmod 700 ~/.ssh" 单独登录服务器,先把 .ssh 目录建好,并设置好权限 700(只有你自己能读写 / 进入)。这一步在方案 1 里,被合并到了后面的命令里一起执行。

  2. **第二步 cat ... | ssh ...**和方案 1 的后半部分完全一样,读取公钥、追加到文件、设置文件权限。


✅ 第三步:测试免密登录

在本地终端里执行:

bash 复制代码
ssh lqq@10.176.56.231

如果直接登录成功,没有提示输入密码,就说明配置成功了!


⚙️ 第四步:让 Cursor 也用上免密登录

Cursor 是基于 VS Code 内核的,会自动读取系统的 SSH 配置,所以终端能免密后,Cursor 直接就可以免密登录了。如果 Cursor 还是提示输入密码,可以手动配置一下 SSH config:

  1. 打开本地的 SSH 配置文件:

    • Windows: C:\Users\你的用户名\.ssh\config
    • Mac/Linux: ~/.ssh/config
  2. 添加服务器配置(如果已经有就直接修改):

    ssh-config

    复制代码
    Host lab-server
        HostName 10.176.56.231
        User lqq
        IdentityFile ~/.ssh/id_ed25519
  3. 保存后,重启 Cursor,重新连接服务器,就不会再弹密码输入框了。

第一步:配置本地 SSH 快捷方式(让 Cursor 能识别)

  1. 打开文件资源管理器,在地址栏输入:

    plaintext

    复制代码
    C:\Users\qqqqq\.ssh
  2. 找到 config 文件(如果没有,就新建一个文本文档,改名为 config必须删掉 .txt 后缀

  3. 用记事本打开 config 文件,复制下面这段内容进去:

    ssh-config

    复制代码
    Host lab-server
        HostName 10.176.56.231
        User lqq
        IdentityFile C:\Users\qqqqq\.ssh\id_ed25519
    • Host lab-server:这是你给服务器起的别名,Cursor 里会显示这个名字,你也可以改成自己喜欢的名字,比如 fdu-lab
    • HostName:服务器 IP,和你登录用的一样
    • User:你的服务器用户名 lqq
    • IdentityFile:你的私钥文件路径,和你电脑里的路径对应
  4. 保存文件,关闭记事本。


第二步:在 Cursor 里连接服务器

  1. 打开 Cursor,按 Ctrl+Shift+P 打开命令面板
  2. 输入 Remote-SSH: Connect to Host... 并回车
  3. 你会看到列表里出现了你刚才配置的 lab-server,点击它
  4. 第一次连接时,Cursor 会提示你选择服务器的平台,选 Linux 就行
  5. 稍等几秒,Cursor 就会自动连接上服务器,全程不需要输密码

连接成功后,你就可以像本地一样打开服务器里的项目、编辑文件了。


补充:如果 Cursor 里没显示你的服务器

如果在 Connect to Host... 里看不到 lab-server,按下面步骤排查:

  1. 检查 config 文件有没有后缀名(比如是不是 config.txt),如果有,必须改成 config
  2. 检查文件路径和用户名有没有写错,尤其是 IdentityFile 里的路径,要和你电脑里的私钥路径完全一致
  3. 重启一下 Cursor,再试一次
相关推荐
鹏毓网络科技2 天前
Cursor Rules 文件配置实战:3 个隐藏参数让我每月少写 40% 样板代码
前端·github
嘻嘻仙人3 天前
Ubuntu中 git上传自己的项目和二次上传一般流程
git·github
白鲸开源3 天前
Apache SeaTunnel Zeta Engine 的 Basic Auth 是怎么工作的?
java·vue.js·github
白鲸开源3 天前
一文读懂DolphinScheduler插件机制:如何轻松扩展任务类型与数据源
java·架构·github
徐小夕4 天前
万字拆解 JitWord:企业级实时协同文档底层架构 + 大模型 AI 融合完整实践
前端·vue.js·github
码流怪侠4 天前
【GitHub】Ponytail:给 AI 编码代理植入“懒人资深开发者“灵魂的开源插件深度拆解
程序员·github·ai编程
齐翊4 天前
怎么确认 AI 看懂了你的提示词?
人工智能·github·ai编程
李小庆4 天前
Sowork AI Agent 编程助手教程 :第一章 Python环境搭建与Sowork项目克隆学习目标
github
OpenTiny社区5 天前
🎨 看完 GenUI SDK 源码我悟了!
前端·vue.js·github
千寻girling5 天前
一份不可多得的《微服务》教程
后端·面试·github