windows本机vscode通过ssh免密登录远程linux服务器 && git push/pull 免密

文章目录

  • 免密登录服务器
      • 一、前置条件
      • [二、步骤 1:本地生成 SSH 密钥对](#二、步骤 1:本地生成 SSH 密钥对)
        • [1. 打开本地终端(或命令提示符)](#1. 打开本地终端(或命令提示符))
        • [2. 生成密钥对](#2. 生成密钥对)
        • [3. 确认密钥存储路径(默认即可)](#3. 确认密钥存储路径(默认即可))
        • [4. 可选:设置密钥密码(推荐)](#4. 可选:设置密钥密码(推荐))
        • [5. 密钥生成成功](#5. 密钥生成成功)
      • [三、步骤 2:将本地公钥上传到远程服务器](#三、步骤 2:将本地公钥上传到远程服务器)
        • [方法 1:自动上传(推荐,最简单)](#方法 1:自动上传(推荐,最简单))
        • 执行后验证:
        • [方法 2:手动上传(适用于 `ssh-copy-id` 不可用的场景)](#方法 2:手动上传(适用于 ssh-copy-id 不可用的场景))
      • [四、步骤 3:验证 SSH 免密登录(可选但推荐)](#四、步骤 3:验证 SSH 免密登录(可选但推荐))
      • [五、步骤 4:VS Code 安装并配置 Remote - SSH 插件](#五、步骤 4:VS Code 安装并配置 Remote - SSH 插件)
        • [1. 安装插件](#1. 安装插件)
        • [2. 配置 SSH 连接](#2. 配置 SSH 连接)
        • [3. 连接远程服务器](#3. 连接远程服务器)
      • [六、步骤 5:在 VS Code 中操作远程服务器](#六、步骤 5:在 VS Code 中操作远程服务器)
      • 常见问题排查
  • [git push免密](#git push免密)
  • git配置
    • [1. 全局配置](#1. 全局配置)
    • [2. 单个仓库配置](#2. 单个仓库配置)
    • [3. 验证配置是否生效](#3. 验证配置是否生效)

免密登录服务器

要在 VS Code 中通过 SSH 免密登录远程 Linux 服务器,核心是 配置本地与服务器的 SSH 密钥认证 (替代密码登录),再通过 VS Code 的 Remote - SSH 插件连接。以下是详细步骤,适用于 Windows/macOS/Linux 本地环境:

一、前置条件

  1. 本地已安装 VS Code(官网下载)。
  2. 本地已安装 SSH 客户端(关键):
    • Windows 10/11:默认自带 OpenSSH 客户端(设置 → 应用 → 可选功能 → 检查"OpenSSH 客户端",未安装则手动添加);
    • macOS/Linux:系统自带 SSH 客户端,无需额外安装。
  3. 远程 Linux 服务器:
    • 已开启 SSH 服务(sshd 进程运行,默认端口 22);
    • 知道服务器的 IP 地址 (如 192.168.1.100)和 登录用户名 (如 root 或普通用户 ubuntu)。

二、步骤 1:本地生成 SSH 密钥对

SSH 免密登录的核心是"公钥存服务器,私钥存本地",本地通过私钥认证身份,无需输入密码。

1. 打开本地终端(或命令提示符)
  • Windows:按 Win + R 输入 cmdPowerShell
  • macOS/Linux:直接打开终端(Terminal)。
2. 生成密钥对

在终端中执行以下命令(无需修改,直接回车):

bash 复制代码
ssh-keygen -t ed25519 -C "你的备注(如邮箱、服务器IP)"
  • 说明:ed25519 是更安全的密钥算法(推荐);若服务器较老不支持,可改用 rsa 算法:ssh-keygen -t rsa -b 4096 -C "备注"
3. 确认密钥存储路径(默认即可)

执行命令后会提示:

复制代码
Enter file in which to save the key (/用户/你的用户名/.ssh/id_ed25519):

直接按回车(使用默认路径,避免后续配置麻烦)。

4. 可选:设置密钥密码(推荐)

接着会提示设置"密钥密码"(passphrase):

复制代码
Enter passphrase (empty for no passphrase):
  • 建议设置一个密码(保护本地私钥,即使私钥泄露也需密码才能使用);
  • 若不想设置,直接按两次回车跳过。
5. 密钥生成成功

终端会显示密钥存储路径,默认路径:

  • Windows:C:\Users\你的用户名\.ssh\(含 id_ed25519 私钥 + id_ed25519.pub 公钥);
  • macOS/Linux:~/.ssh/(同上)。

三、步骤 2:将本地公钥上传到远程服务器

需把本地的 公钥文件(id_ed25519.pub 复制到远程服务器的 ~/.ssh/authorized_keys 文件中(这是 SSH 密钥认证的核心配置)。

方法 1:自动上传(推荐,最简单)

在本地终端执行以下命令(替换占位符):

bash 复制代码
ssh-copy-id -i ~/.ssh/id_ed25519.pub 服务器用户名@服务器IP 

若powershell不支持ssh-copy-id

bash 复制代码
type C:\Users\Leo\.ssh\id_rsa_new.pub | ssh -p 22 lhr@115.190.213.213 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"
  • 示例:若服务器 IP 是 192.168.1.100,用户是 ubuntu,则命令为:

    bash 复制代码
    ssh-copy-id -i ~/.ssh/id_ed25519.pub ubuntu@192.168.1.100
执行后验证:
  1. 首次连接会提示"是否信任服务器",输入 yes 回车;
  2. 接着输入 远程服务器的登录密码(仅这一次,后续免密);
  3. 提示 Number of key(s) added: 1 则成功。
方法 2:手动上传(适用于 ssh-copy-id 不可用的场景)
  1. 本地终端查看公钥内容(复制输出的全部文本):

    bash 复制代码
    cat ~/.ssh/id_ed25519.pub

    输出格式类似:ssh-ed25519 AAAAB3NzaC1yc2EAAAADAQABAAABAQ... 你的备注

  2. 登录远程服务器(输入密码):

    bash 复制代码
    ssh 服务器用户名@服务器IP
  3. 在服务器上执行以下命令(确保 .ssh 目录存在且权限正确):

    bash 复制代码
    # 创建 .ssh 目录(若已存在则忽略)
    mkdir -p ~/.ssh
    # 设置目录权限(必须 700,否则 SSH 拒绝识别)
    chmod 700 ~/.ssh
    # 将本地公钥内容追加到 authorized_keys 文件(关键)
    echo "复制的本地公钥文本" >> ~/.ssh/authorized_keys
    # 设置文件权限(必须 600,否则 SSH 拒绝识别)
    chmod 600 ~/.ssh/authorized_keys
  4. 退出服务器:exit

四、步骤 3:验证 SSH 免密登录(可选但推荐)

在本地终端执行以下命令,若无需输入密码即可登录服务器,则密钥配置成功:

bash 复制代码
ssh 服务器用户名@服务器IP
  • 若之前设置了"密钥密码",首次登录会提示输入(可勾选"保存到钥匙串",后续无需重复输入);
  • 登录成功后,执行 exit 退出服务器,继续配置 VS Code。

若仍提示输入密码,则

bash 复制代码
# 用 -i 参数指定你的私钥文件路径
ssh -i 私钥文件路径 -p 22 user@ip

五、步骤 4:VS Code 安装并配置 Remote - SSH 插件

1. 安装插件
  • 打开 VS Code,点击左侧「扩展」(或按 Ctrl+Shift+X);
  • 搜索 Remote - SSH(作者:Microsoft),点击「安装」;
  • 安装完成后,左侧会出现「远程资源管理器」图标(类似「><」)。
2. 配置 SSH 连接
  1. 点击 VS Code 左下角的「><」图标(打开远程连接菜单),选择「Connect to Host...」→「Configure SSH Hosts...」;

  2. 选择 SSH 配置文件路径(默认即可,无需修改):

    • Windows:C:\Users\你的用户名\.ssh\config
    • macOS/Linux:~/.ssh/config
  3. 打开 config 文件后,添加以下配置(替换占位符):

    config 复制代码
    Host 服务器别名(自定义,如 my-server)
      HostName 服务器IP(如 192.168.1.100)
      User 服务器用户名(如 ubuntu)
      IdentityFile 本地私钥路径(默认无需修改,自动识别)
      # 可选:若服务器 SSH 端口不是 22(如 2222),添加以下行
      # Port 2222

    示例配置:

    config 复制代码
    Host my-linux-server
      HostName 192.168.1.100
      User ubuntu
      Port 22
      IdentityFile C:\Users\xxx\.ssh\id_rsa  # 绝对路径
      IdentityFile ~/.ssh/id_rsa # 相对路径
  4. 保存文件(Ctrl+S)。

3. 连接远程服务器
  1. 再次点击左下角「><」图标,选择「Connect to Host...」,此时会显示你配置的「服务器别名」(如 my-linux-server);
  2. 点击别名,VS Code 会自动启动 SSH 连接:
    • 若之前设置了"密钥密码",会提示输入(勾选"Remember me"后续免输);
    • 首次连接会提示"是否信任服务器指纹",点击「Continue」;
  3. 连接成功后,VS Code 左下角会显示「SSH: 服务器别名」,表示已进入远程环境。

六、步骤 5:在 VS Code 中操作远程服务器

连接成功后,你可以:

  1. 点击「文件」→「打开文件夹」,选择远程服务器上的目录(如 /home/ubuntu/project),即可编辑远程文件;
  2. 打开 VS Code 终端(`Ctrl+``),直接操作远程服务器的命令行;
  3. 安装远程插件(如 Python、C/C++ 插件),直接在 VS Code 中调试远程代码。

常见问题排查

  1. 免密登录失败,仍提示输入密码

    • 检查服务器 ~/.ssh 目录权限:必须是 700ls -ld ~/.ssh 查看);
    • 检查服务器 authorized_keys 文件权限:必须是 600ls -l ~/.ssh/authorized_keys 查看);
    • 检查本地公钥是否正确追加到服务器的 authorized_keys(无多余空格、换行)。
  2. VS Code 连接超时

    • 确认服务器 IP、端口正确(默认 22,若修改过需在 config 中指定 Port);
    • 检查服务器防火墙是否开放 SSH 端口(如 ufw allow 22 或关闭防火墙测试);
    • 确认本地网络能 ping 通服务器(ping 服务器IP)。
  3. Windows 找不到 ssh-copy-id 命令

    • 升级 Windows 10/11 到最新版本,或手动安装 OpenSSH 客户端(设置 → 应用 → 可选功能 → 添加"OpenSSH 客户端");
    • 若仍不可用,直接用「方法 2:手动上传公钥」。

通过以上步骤,即可实现 VS Code 与远程 Linux 服务器的免密 SSH 连接,无缝操作远程文件和代码~

git push免密

  1. 家目录
bash 复制代码
git config --global credential.helper store

执行之后会在.gitconfig文件中增加helper = store

bash 复制代码
[credential]
        helper = store
  1. 项目目录
bash 复制代码
git pull

提示输入账号密码,输完这一次以后就不再需要 ,并且会在根目录生成一个.git-credentials文件。

bash 复制代码
cat .git-credentials

4、之后pull/push代码都不再需要输入账号密码

git配置

1. 全局配置

bash 复制代码
# 配置全局用户名(提交记录显示的名称)
git config --global user.name "你的用户名"

# 配置全局邮箱(提交记录关联的邮箱,建议与 Git 平台账号一致)
git config --global user.email "你的邮箱"

2. 单个仓库配置

进入仓库根目录后执行:

bash 复制代码
# 配置当前仓库的用户名
git config user.name "当前仓库专用用户名"

# 配置当前仓库的邮箱
git config user.email "当前仓库专用邮箱"

3. 验证配置是否生效

bash 复制代码
# 查看全局配置
git config --global --list

# 查看当前仓库配置
git config --list
相关推荐
生而为虫7 分钟前
在VScode中使用Claude Code agent并配置模型(仅mac电脑实际操作,windows电脑未实际操作如有问题可留言)
windows·vscode·macos
IMPYLH21 分钟前
Linux 的 tac 命令
linux·运维·服务器·bash
叶小鸡23 分钟前
Java 篇-项目实战-天机学堂(从0到1)-day10
windows·microsoft
白菜欣1 小时前
Linux —进程概念
linux·运维·服务器
love530love1 小时前
如何在 Google Chrome 中强制开启 Gemini AI 侧边栏(完整图文教程)
前端·人工智能·chrome·windows
skilllite作者1 小时前
Zed 1.0 编辑器深度评测与实战指南
开发语言·人工智能·windows·python·编辑器·agi
杜哥无敌1 小时前
FreeSSHd vs FileZilla Server vs SFTPGo:Windows SFTP服务器易用性终极横向测评
运维·服务器·windows
楼田莉子1 小时前
仿Muduo的高并发服务器:Channel模块与Poller模块
linux·服务器·c++·学习·设计模式
IMPYLH1 小时前
Linux 的 tail 命令
linux·运维·服务器·bash
生成论实验室1 小时前
《事件关系阴阳博弈动力学:识势应势之道》第五篇:安全关键关系——故障、障碍与冲突
运维·服务器·人工智能·安全·架构