能直接免密连上树莓派的关键在于本地SSH配置与树莓派端公钥认证生效:需用ed25519算法生成密钥、正确配置~/.ssh/config、严格设置authorized_keys权限为600且属主为pi、确保sshd开启PubkeyAuthentication并禁用密码登录。
能直接免密连上树莓派,关键不在 VSCode 插件本身,而在本地 SSH 配置和树莓派端的公钥认证是否真正生效。
Remote-SSH 插件只是调用系统
命令,它不会帮你生成密钥、改权限或开服务——这些必须手动做对,否则插件再好也卡在密码提示里。
ssh-keygen 生成密钥时选什么算法?
别用默认的
(除非老系统兼容性要求高)。优先执行:
原因很实在:
更快、更短、更安全,且现代树莓派 OS(Raspberry Pi OS Bullseye+、Ubuntu 22.04+)默认支持。如果生成后连接报
,说明树莓派端
太旧,需升级或退回
。
后的注释建议写成
,方便多密钥管理
私钥文件名不要带空格或特殊字符,
是最稳妥的命名
生成时不设 passphrase(直接回车),否则每次连接仍要输密码
~/.ssh/config 里哪些字段不能少?
VSCode 的 Remote-SSH 依赖这个配置文件识别连接参数。一个最小可用配置如下:
注意几个硬性要求:
必须是 IP 或可解析的域名,不能是主机名(如
在某些网络下不稳定)
必须用绝对路径,Windows 用户写成
,且路径中不能有中文或空格
删掉
相关项——X11 转发不是免密前提,加了反而可能因 Xming 未运行导致连接延迟或失败
不要在配置里写
,那是服务端配置,客户端不认
树莓派端 authorized_keys 权限为什么总被拒绝?
这是最常踩的坑:SSH 服务对权限极其敏感,只要错一个数字就退回到密码登录。
在树莓派上执行以下三步,缺一不可:
VSCode 1.118
微软正式发布 Visual Studio Code 1.118 版本 。本次更新重点强化了 AI 开发体验与企业管理能力,其中最引人注目的是新增 Copilot CLI 远程控制功能,允许开发者通过手机或网页远程监控和接管 AI 会话 。同时,为了提高 AI 的运行性价比,新版本优化了令牌缓存策略以降低成本 。此外,1.118 版还引入了 Chronicle 本地历史追踪、TypeScript 7.0 支持以及更严格的企业级访问管控 。
下载
确保
目录权限是
:
确保
权限是
:
确认文件所有者是登录用户(比如
),不是
:
看输出第一列
如果用
失败,手动复制更可靠:
然后立刻在树莓派上检查
是否含这两行且未被注释:
改完必须重启服务:
。
VSCode 连接时还弹密码框?先查这三件事
Remote-SSH 插件显示“正在连接…”但卡住,或弹出密码输入框,大概率不是插件问题:
本地终端执行
,看是否免密——如果终端也弹密码,说明 SSH 层没通,不用折腾 VSCode
检查 VSCode 左下角状态栏是否显示当前连接目标;如果显示的是
或其他 host,说明你点错了配置项
打开 VSCode 的 Remote-SSH 日志(命令面板 →
),搜索
和
,能快速定位是密钥路径错还是权限错
真实情况往往是:本地密钥生成了、
写对了、树莓派
也贴上了,但忘了
——这个数字权限差一点,SSH 就直接无视整条公钥。别跳过验证步骤,哪怕只多敲一行
。
sshrsassh-keygen -t ed25519 -C "pi@raspberrypi" -f ~/.ssh/id_ed25519ed25519no mutual signature algorithmsshd-t rsa -b 4096-C用户名@主机名id_ed25519Host raspberrypi
HostName 192.168.1.100
User pi
IdentityFile ~/.ssh/id_ed25519
Compression yes
ServerAliveInterval 60HostNameraspberrypi.localIdentityFileC:\Users\name\.ssh\id_ed25519ForwardX11PasswordAuthentication no~/.ssh700chmod 700 ~/.ssh~/.ssh/authorized_keys600chmod 600 ~/.ssh/authorized_keyspirootls -l ~/.ssh/authorized_keysssh-copy-idcat ~/.ssh/id_ed25519.pub | ssh pi@192.168.1.100 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"/etc/ssh/sshd_configPubkeyAuthentication yes
PasswordAuthentication nosudo systemctl restart sshssh raspberrypilocalhostRemote-SSH: Show Logidentity filePermission deniedconfigauthorized_keyschmod 600ls -l ~/.ssh