云服务器ssh连接失败主因是安全组未放行22端口、密钥未配置或host key缓存冲突;必须开通安全组规则、部署ssh公钥、启用pubkeyauthentication并重启sshd服务。

能连,但默认直连大概率失败——云服务器的 SSH 端口(22)通常被安全组默认拦截,且多数用户没开 root 密码登录或没配密钥,直接填 ssh root@xxx.xxx.xxx.xxx 会卡在连接超时或 Permission denied。
为什么 vs code 连不上云服务器?先看三个硬性拦路虎
不是插件装错,而是底层连接根本通不过:
-
Connection timed out:阿里云/腾讯云安全组没放行22端口,或者实例没绑定公网 IP(NAT 网关或弹性公网 IP 未配置) -
Permission denied (publickey):云服务器禁用了密码登录(默认行为),而你没提前部署 SSH 密钥,id_rsa.pub没追加进/root/.ssh/authorized_keys -
Host key verification failed:同一 IP 曾连过其他机器(比如重装系统后重置了 SSH host key),本地~/.ssh/known_hosts缓存冲突,需手动删对应行
必须做的三件事:开安全组、配密钥、改 sshd_config
跳过这步,Remote-SSH 插件再点十次“Connect”也没用:
- 登录阿里云控制台 → 云服务器 ECS → 实例详情页 → 安全组 → 配置规则 → 添加入方向规则:
端口范围 22/22,授权对象填0.0.0.0/0(测试用)或你的本地公网 IP - 本地生成密钥对:
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa_cloud,然后把公钥内容(cat ~/.ssh/id_rsa_cloud.pub)粘贴到云服务器的/root/.ssh/authorized_keys中(注意权限:chmod 700 /root/.ssh && chmod 600 /root/.ssh/authorized_keys) - 登录云服务器终端,编辑
/etc/ssh/sshd_config,确认以下三项已启用:PubkeyAuthentication yes、PasswordAuthentication no(推荐关闭密码)、PermitRootLogin yes(如需 root 登录);改完执行systemctl restart sshd
vscode 里怎么写正确的 SSH 配置?别手输命令
用图形界面输 ssh root@xxx.xxx.xxx.xxx 很容易漏参数,建议直接改 ~/.ssh/config 文件:
腾讯云跨账号资源迁移工具,支持将账号A的VPC、CLB、NAT、CVM、安全组等资源迁移至账号B,通过CCN云联网实现跨账号网络互通,提供自动扫描、配置生成、Terraform部署功能。
Host aliyun-prod
HostName 121.40.xxx.xxx
User root
IdentityFile ~/.ssh/id_rsa_cloud
Port 22
保存后,在 VS Code Remote Explorer 里点击 “+” → 选 “Add SSH Host…” → 输入 aliyun-prod(就是上面 Host 后的名字),回车。它会自动读取 config 里的所有字段,不再让你反复输 IP、端口、密钥路径。
连上了却打不开文件夹?检查远程 VS Code Server 下载路径
首次连接时,VS Code 会在远程服务器上下载一个服务端二进制(vscode-server),默认放在 ~/.vscode-server。如果用户家目录磁盘满、或 /root 下没写权限(某些腾讯云镜像限制 root 家目录挂载为只读),就会卡在 “Installing VS Code Server” 并报错 EPERM: operation not permitted:
- 解决方法一:用非 root 用户连接(推荐)。新建普通用户(
adduser dev && usermod -aG sudo dev),把密钥拷过去,改 config 的User字段 - 解决方法二:强制指定安装路径。在 config 里加一行:
RemoteCommand mkdir -p /tmp/vscode-server && export VSCODE_SERVER_DATA=/tmp/vscode-server(不推荐,临时方案) - 验证是否真卡在这:SSH 登上去,运行
ps aux | grep vscode,看有没有install.sh进程卡住,或查~/.vscode-server/.../logs/下的错误日志
云服务器的 root 权限、磁盘空间、SELinux 状态、glibc 版本(CentOS 6 已不支持)——这些细节不会在 VS Code 报错里明说,但每一条都足以让连接停在半路。










