windows本机vscode通过ssh免密登录远程linux服务器 git push/pull 免密
文章目录
- 免密登录服务器
- 一、前置条件
- 二、步骤 1:本地生成 SSH 密钥对
- 1. 打开本地终端(或命令提示符)
- 2. 生成密钥对
- 3. 确认密钥存储路径(默认即可)
- 4. 可选:设置密钥密码(推荐)
- 5. 密钥生成成功
- 三、步骤 2:将本地公钥上传到远程服务器
- 方法 1:自动上传(推荐,最简单)
- 执行后验证:
- 方法 2:手动上传(适用于 `ssh-copy-id` 不可用的场景)
- 四、步骤 3:验证 SSH 免密登录(可选但推荐)
- 五、步骤 4:VS Code 安装并配置 Remote - SSH 插件
- 1. 安装插件
- 2. 配置 SSH 连接
- 3. 连接远程服务器
- 六、步骤 5:在 VS Code 中操作远程服务器
- 常见问题排查
- git push免密
免密登录服务器
要在 VS Code 中通过 SSH 免密登录远程 Linux 服务器,核心是 配置本地与服务器的 SSH 密钥认证(替代密码登录),再通过 VS Code 的 Remote - SSH 插件连接。以下是详细步骤,适用于 Windows/macOS/Linux 本地环境:
一、前置条件
- 本地已安装 VS Code(官网下载)。
- 本地已安装 SSH 客户端(关键):
- Windows 10/11:默认自带 OpenSSH 客户端(设置 → 应用 → 可选功能 → 检查“OpenSSH 客户端”,未安装则手动添加);
- macOS/Linux:系统自带 SSH 客户端,无需额外安装。
- 远程 Linux 服务器:
- 已开启 SSH 服务(
sshd进程运行,默认端口 22); - 知道服务器的 IP 地址(如
192.168.1.100)和 登录用户名(如root或普通用户ubuntu)。
- 已开启 SSH 服务(
二、步骤 1:本地生成 SSH 密钥对
SSH 免密登录的核心是“公钥存服务器,私钥存本地”,本地通过私钥认证身份,无需输入密码。
1. 打开本地终端(或命令提示符)
- Windows:按
Win + R输入cmd或PowerShell; - macOS/Linux:直接打开终端(Terminal)。
2. 生成密钥对
在终端中执行以下命令(无需修改,直接回车):
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:自动上传(推荐,最简单)
在本地终端执行以下命令(替换占位符):
ssh-copy-id -i ~/.ssh/id_ed25519.pub 服务器用户名@服务器IP
若powershell不支持ssh-copy-id
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,则命令为:ssh-copy-id -i ~/.ssh/id_ed25519.pub ubuntu@192.168.1.100
执行后验证:
- 首次连接会提示“是否信任服务器”,输入
yes回车; - 接着输入 远程服务器的登录密码(仅这一次,后续免密);
- 提示
Number of key(s) added: 1则成功。
方法 2:手动上传(适用于 ssh-copy-id 不可用的场景)
-
本地终端查看公钥内容(复制输出的全部文本):
cat ~/.ssh/id_ed25519.pub输出格式类似:
ssh-ed25519 AAAAB3NzaC1yc2EAAAADAQABAAABAQ... 你的备注 -
登录远程服务器(输入密码):
ssh 服务器用户名@服务器IP -
在服务器上执行以下命令(确保
.ssh目录存在且权限正确):# 创建 .ssh 目录(若已存在则忽略) mkdir -p ~/.ssh # 设置目录权限(必须 700,否则 SSH 拒绝识别) chmod 700 ~/.ssh # 将本地公钥内容追加到 authorized_keys 文件(关键) echo "复制的本地公钥文本" >> ~/.ssh/authorized_keys # 设置文件权限(必须 600,否则 SSH 拒绝识别) chmod 600 ~/.ssh/authorized_keys -
退出服务器:
exit
四、步骤 3:验证 SSH 免密登录(可选但推荐)
在本地终端执行以下命令,若无需输入密码即可登录服务器,则密钥配置成功:
ssh 服务器用户名@服务器IP
- 若之前设置了“密钥密码”,首次登录会提示输入(可勾选“保存到钥匙串”,后续无需重复输入);
- 登录成功后,执行
exit退出服务器,继续配置 VS Code。
若仍提示输入密码,则
# 用 -i 参数指定你的私钥文件路径
ssh -i 私钥文件路径 -p 22 user@ip
五、步骤 4:VS Code 安装并配置 Remote - SSH 插件
1. 安装插件
- 打开 VS Code,点击左侧「扩展」(或按
Ctrl+Shift+X); - 搜索
Remote - SSH(作者:Microsoft),点击「安装」; - 安装完成后,左侧会出现「远程资源管理器」图标(类似「><」)。
2. 配置 SSH 连接
- 点击 VS Code 左下角的「><」图标(打开远程连接菜单),选择「Connect to Host…」→「Configure SSH Hosts…」;
- 选择 SSH 配置文件路径(默认即可,无需修改):
- Windows:
C:\Users\你的用户名\.ssh\config; - macOS/Linux:
~/.ssh/config;
- Windows:
- 打开
config文件后,添加以下配置(替换占位符):
示例配置:Host 服务器别名(自定义,如 my-server)HostName 服务器IP(如 192.168.1.100)User 服务器用户名(如 ubuntu)IdentityFile 本地私钥路径(默认无需修改,自动识别)# 可选:若服务器 SSH 端口不是 22(如 2222),添加以下行# Port 2222Host my-linux-serverHostName 192.168.1.100User ubuntuPort 22IdentityFile C:\Users\xxx\.ssh\id_rsa # 绝对路径IdentityFile ~/.ssh/id_rsa # 相对路径 - 保存文件(
Ctrl+S)。
3. 连接远程服务器
- 再次点击左下角「><」图标,选择「Connect to Host…」,此时会显示你配置的「服务器别名」(如
my-linux-server); - 点击别名,VS Code 会自动启动 SSH 连接:
- 若之前设置了“密钥密码”,会提示输入(勾选“Remember me”后续免输);
- 首次连接会提示“是否信任服务器指纹”,点击「Continue」;
- 连接成功后,VS Code 左下角会显示「SSH: 服务器别名」,表示已进入远程环境。
六、步骤 5:在 VS Code 中操作远程服务器
连接成功后,你可以:
- 点击「文件」→「打开文件夹」,选择远程服务器上的目录(如
/home/ubuntu/project),即可编辑远程文件; - 打开 VS Code 终端(`Ctrl+``),直接操作远程服务器的命令行;
- 安装远程插件(如 Python、C/C++ 插件),直接在 VS Code 中调试远程代码。
常见问题排查
-
免密登录失败,仍提示输入密码:
- 检查服务器
~/.ssh目录权限:必须是700(ls -ld ~/.ssh查看); - 检查服务器
authorized_keys文件权限:必须是600(ls -l ~/.ssh/authorized_keys查看); - 检查本地公钥是否正确追加到服务器的
authorized_keys(无多余空格、换行)。
- 检查服务器
-
VS Code 连接超时:
- 确认服务器 IP、端口正确(默认 22,若修改过需在
config中指定Port); - 检查服务器防火墙是否开放 SSH 端口(如
ufw allow 22或关闭防火墙测试); - 确认本地网络能 ping 通服务器(
ping 服务器IP)。
- 确认服务器 IP、端口正确(默认 22,若修改过需在
-
Windows 找不到
ssh-copy-id命令:- 升级 Windows 10/11 到最新版本,或手动安装 OpenSSH 客户端(设置 → 应用 → 可选功能 → 添加“OpenSSH 客户端”);
- 若仍不可用,直接用「方法 2:手动上传公钥」。
通过以上步骤,即可实现 VS Code 与远程 Linux 服务器的免密 SSH 连接,无缝操作远程文件和代码~
git push免密
- 家目录
git config --global credential.helper store
执行之后会在.gitconfig文件中增加helper = store
[credential]helper = store
- 项目目录
git pull
提示输入账号密码,输完这一次以后就不再需要,并且会在根目录生成一个.git-credentials文件。
cat .git-credentials
4、之后pull/push代码都不再需要输入账号密码
