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
相关推荐
好评12444 分钟前
Linux入门:软件包管理、Vim、GCC、Makefile、Git 与 GDB
linux·运维·服务器
m0_738120722 小时前
应急响应——知攻善防Web-3靶机详细教程
服务器·前端·网络·安全·web安全·php
石像鬼₧魂石7 小时前
内网渗透靶场实操清单(基于 Vulhub+Metasploitable 2)
linux·windows·学习·ubuntu
Danileaf_Guo7 小时前
256台H100服务器算力中心的带外管理网络建设方案
运维·服务器
拾贰_C9 小时前
【Linux | Windows | Terminal Command】 Linux---grep | Windows--- findstr
linux·运维·服务器
alengan10 小时前
linux上面写python3日志服务器
linux·运维·服务器
小卒过河010412 小时前
使用apache nifi 从数据库文件表路径拉取远程文件至远程服务器目的地址
运维·服务器·数据库
土星云SaturnCloud12 小时前
液冷“内卷”:在局部优化与系统重构之间,寻找第三条路
服务器·人工智能·ai·计算机外设
秋田君12 小时前
前端工程化部署入门:Windows + Nginx 实现多项目独立托管与跨域解决方案
前端·windows·nginx