You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用VSCode通过Tailscale SSH连接时权限拒绝问题排查

问题

我搭建了包含两个节点的Tailscale网络:一个标记为tag:server的Ubuntu 22.04服务器,一个标记为tag:client的Windows笔记本。我希望通过VSCode的Remote SSH插件访问服务器,但反复收到Permission Denied错误。

我的配置

ACL配置

{
    "groups": {
        "group:admin": [<my_email_address>],
    },
    "tagOwners": {
        "tag:server": ["group:admin"],
        "tag:client": ["group:admin"],
    },
    "acls": [
        {"action": "accept", "src": ["*"], "dst": ["*:*"]},
    ],

    "ssh": [
        {
            "action": "accept",
            "src":    ["group:admin"],
            "dst":    ["tag:server"],
            "users":  ["autogroup:nonroot"],
        },
    ],
    "nodeAttrs": [
        {
            "target": ["tag:server"],
            "attr":   ["funnel"],
        },
    ],
}

SSH配置

Host homeserver
    User <non_root_username>
    HostName homeserver.<my_tailnet_id>.ts.net

现象与日志

通过Admin Console进行SSH连接可正常工作,但CMD.exe、VSCode Remote及VSCode Tailscale扩展连接均失败,提示无额外上下文的Permission Denied错误。

使用ssh -vvv得到的连接日志:

C:\Users\this_user>ssh -vvv username@homeserver.<my_tailnet>.ts.net
OpenSSH_for_Windows_8.6p1, LibreSSL 3.4.3
debug1: Reading configuration data C:\\Users\\this_user/.ssh/config
debug1: C:\\Users\\this_user/.ssh/config line 10: Applying options for homeserver.<my_tailnet>.ts.net
debug3: Failed to open file:C:/ProgramData/ssh/ssh_config error:2
debug3: expanded UserKnownHostsFile '~/.ssh/known_hosts' -> 'C:\\Users\\this_user/.ssh/known_hosts'
debug3: expanded UserKnownHostsFile '~/.ssh/known_hosts2' -> 'C:\\Users\\this_user/.ssh/known_hosts2'
debug1: Authenticator provider $SSH_SK_PROVIDER did not resolve; disabling
debug2: resolving "homeserver.<my_tailnet>.ts.nett" port 22
debug3: ssh_connect_direct: entering
debug1: Connecting to homeserver.<my_tailnet>.ts.net [100.110.num.num] port 22.
debug3: finish_connect - ERROR: async io completed with error: 10013, io:000002B367DC5260
debug1: connect to address 100.110.num.num port 22: Permission denied
ssh: connect to host homeserver.<my_tailnet>.ts.net port 22: Permission denied

注:日志中的SSH配置错误为误报,实际配置存储在Users/this_user/.ssh目录下。

请问哪里操作有误?该如何修复SSH权限问题?


解决方案

从日志里的error:10013和连接失败情况来看,问题大概率出在Windows防火墙、Tailscale SSH代理配置或者Ubuntu服务器的SSH设置上,按以下步骤排查修复:

1. 检查Windows防火墙规则

Windows的防火墙可能拦截了SSH连接请求(错误10013通常是权限被防火墙阻止):

  • 打开Windows Defender防火墙,进入「高级设置」
  • 确认是否有允许ssh.exe(OpenSSH客户端)出站连接的规则,如果没有,手动添加:
    • 新建出站规则,选择「程序」,指向C:\Windows\System32\OpenSSH\ssh.exe
    • 允许连接,应用到所有网络类型(包括Tailscale的虚拟网络)

2. 强制使用Tailscale的SSH代理

Admin Console能连成功是因为它用了Tailscale内置的SSH代理,而本地OpenSSH默认直接连服务器22端口,可能被服务器防火墙或Tailscale ACL限制。修改本地SSH配置:
更新~/.ssh/config中的Host配置:

Host homeserver
    User <non_root_username>
    HostName homeserver.<my_tailnet_id>.ts.net
    ProxyCommand tailscale ssh --proxy=%h:%p

这样所有SSH请求都会走Tailscale的代理通道,和Admin Console的连接方式一致。

3. 验证Ubuntu服务器的SSH设置

  • 登录Ubuntu服务器,检查/etc/ssh/sshd_config:
    • 确保PasswordAuthentication或PubkeyAuthentication已开启(根据你使用的认证方式)
    • 确认你用的非root用户在AllowUsers列表中(如果配置了该选项)
  • 重启sshd服务:sudo systemctl restart sshd

4. 确认Tailscale节点的SSH状态

在Ubuntu服务器上执行tailscale status,确认节点已正确标记tag:server,且Tailscale SSH功能已启用:

  • 如果未启用,执行sudo tailscale set --ssh开启Tailscale SSH

5. 检查Tailscale ACL的SSH规则

当前ACL的SSH规则允许group:admin访问tag:server的非root用户,确认:

  • 你的Windows节点已属于group:admin(在Admin Console的用户组中检查)
  • 服务器上的非root用户确实存在,且你在SSH配置中填写的用户名正确

完成以上步骤后,重新尝试用VSCode Remote SSH或CMD连接,即可解决Permission Denied问题。

内容的提问来源于stack exchange,提问作者noobvorld

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 17:05:15