Update: 有救了

放弃追求大一统了,用 YubiKey 的末路就是我锁我自己。

目录

开始

在服务器 ~.ssh/authorized_keys 只记录 GPG auth SSH 公钥的情况下,不带 YubiKey 进服务器终端的选择就只有提供商管理面板的 Console 了,自己整一个别的东西的体验会比这好些。

Cockpit?

以前拿 Cockpit 当网页终端用,当然,它的功能不止于网页终端,有很多可以做的事。由于我用的是 Ubuntu,安装它的最新版本需要开 backports,感觉不方便,前段时间就决定不用了。RedHat 系列的其他发行版可能会用得更舒服些。

ttyd

大概率可以直接用软件包管理器安装,但版本差异可能会影响到配置的写法,有问题就看看 ttyd --helpman ttyd。配置方法多种多样,可以看 官方 wiki ,但需要注意公网访问安全,最好上 SSL 或代理隧道,我用的是 ttyd 本地端口 + nginx 反向代理。

Ubuntu 24.04 LTS 装好后确认 systemd 服务状态,然后修改 /etc/default/ttyd

TTYD_OPTIONS="-W -U www:www -i /tmp/ttyd.sock -H X-WEBAUTH-USER -O login"
  • -W - 可写,不加就默认只能看,无法输入
  • -U - 指定 domain socket 文件用户和用户组让 nginx 有权访问
  • -i - 指定 domain socket 文件位置
  • -H - Auth Proxy
  • -O - 禁止非同源 websocket 连接
  • login - 登录系统账户

再配置 nginx,带个 basic auth 保险,其余 SSL 部分我就不写了。

    location / {
        auth_basic "ttyd";
        auth_basic_user_file "/etc/apache2/ttyd_htpasswd";
        proxy_set_header X-WEBAUTH-USER $remote_user;
        proxy_set_header Authorization "";

        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        proxy_pass http://unix:/tmp/ttyd.sock;
    }

重启一下 ttyd 和 nginx 服务应该就能用,登录需要先完成 basic auth,再完成系统账户登录。

ConnectBot

换手机之前还能拿 OpenKeychainTermBot 组合用 YubiKey GPG 上 SSH,但换手机之后就没法用 TermBot(停更,非 64-bit)了,找不到好的替代方案,用 ttyd 的体验极差(一半锅在输入法,一半锅在没有 Esc 等特殊按键)。

摆烂,安装 ConnectBot ,生成密钥,导出公钥加到服务器 ~.ssh/authorized_keys,舒服了。YubiKey?什么是 YubiKey

结束

即使我有备用 YubiKey,仍然由于怕丢而不怎么随身携带(PayPal 这种垃圾货只允许注册一把 Security Key),并且所有安排上 YubiKey WebAuthn / FIDO2 的服务都没有取消原本的 TOTP 认证。大概是,好像用了 YubiKey,好像又没有用,就这样吧。

标签: none

知识共享许可协议 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。

添加新评论