在 Windows 上愉快的使用 Yubikey 登录 SSH - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
swchzq
V2EX    YubiKey

在 Windows 上愉快的使用 Yubikey 登录 SSH

  •  
  •   swchzq 2019-10-09 13:55:36 +08:00 13057 次点击
    这是一个创建于 2262 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前网上很少关于 Windows 上使用 Yubikey 登录 SSH 的资料,而且绝大部分教程都是教你怎么使用 OpenPGP 模式,通过 gpg-agent 完成 SSH 认证。使用 gpg-agent 在 Windows 上的局限性是很大的,很多第三方 SSH 客户端( SecureCRT 之类的)并不能通过 gpg-agent 成认证,使用起来非常不方便。

    因此,我写了个工具(t/565640),简化了在 Windows 系统上使用 SSH 和 Yubikey 的流程。本篇教程基于这个工具,简要介绍在 Windows 上配置 Yubikey PIV 智能卡,以及登录 SSH 的流程。

    1. 工具准备

    2. 初始化 PIV 证书

    打开 Yubikey Manager, 在Applications中选择PIV, 然后选择Configure Certificates。在Authentication槽位下选择Generate生成证书。算法推荐选 RSA2048,兼容性和安全性都较好。生成好后就可以看到Authentication槽位下有证书了:

    1.png

    3. 查看公钥

    打开 WinCrypt SSH Agent,在任务栏托盘的图标上右键,选择Show Public Keys,就可以看到你刚刚生成的证书对应的 SSH 公钥了,将这个公钥添加到服务器~/.ssh/authorized_keys中即可。

    如果显示了多个公钥,这是应为你有多个数字证书,可以根据公钥结尾的名称区分对应的是哪个证书。

    4. 设置环境变量

    打开 WinCrypt SSH Agent,在任务栏托盘的图标上右键,选择你需要使用的 SSH 客户端类型,设置对应的环境变量即可。这里以 WSL 为例介绍:

    • 在任务栏托盘的图标上右键,选择WSL Help
    • 打开 WSL,贴入刚刚显示的命令
    • SSH 连接服务器即可

    2.png

    如果想不用每次都设置环境变量,可以对环境变量做持久化,并把 WinCrypt SSH Agent 加入开机启动项。

    WSL 和 Cygwin 可以在.bashrc 中设置

    WinSSH 和 SecureCRT 可以在 Windows 的系统设置中配置

    11 条回复    2022-07-23 20:51:47 +08:00
    commoccoom
        1
    commoccoom  
       2019-10-25 07:55:44 +08:00
    楼主,你好,我按照你的教程试了一下,用 yubikey 生成证书后,使用 Show Public Keys,但是没有任何公钥显示,这是因为什么?
    commoccoom
        2
    commoccoom  
       2019-10-25 08:14:41 +08:00
    重启一下电脑,之后就可以显示了
    swchzq
        3
    swchzq  
    OP
       2019-10-25 18:22:59 +08:00
    @commoccoom 重新插拔下 yubikey 应该就行, windows 是在智能卡插入的时候读取证书的
    commoccoom
        4
    commoccoom  
       2019-10-25 19:16:16 +08:00
    @swchzq Xshell 怎么设置,好像没有给出操作说明
    swchzq
        5
    swchzq  
    OP
       2019-10-28 10:05:16 +08:00
    @commoccoom Xshell 需要开启外部 ssh agent, 有个选项好像是叫启用 Pageant, 你可以找找看
    commoccoom
        6
    commoccoom  
       2019-10-28 13:41:26 +08:00
    @swchzq 好的,非常感谢!
    sxul07
        7
    sxul07  
       2019-11-23 13:36:48 +08:00
    /w\ 话说大佬这个工具有没有能从 linux 机器把 gpg-agent 转到 windows 的操作啊 遇到这个问题了
    swchzq
        8
    swchzq  
    OP
       2019-11-25 11:09:22 +08:00
    @sxul07 我这个工具是处理 ssh agent 的, 没处理 gpg agent. linux 下的 gpg-agent 监听了个 unix socket 文件, 可以用 socat 转成 tcp socket 就可以让远程主机访问. 我没研究 windows 上的 gpg 是怎么和 agent 通信的, 应该有资料. 弄明白怎么通信的, 写个脚本把 tcp socket 转回对应的格式就能在 windows 上用了. 思路大致是这样, 你可以试试
    yume233
        9
    yume233  
       2022-07-12 23:08:04 +08:00
    楼主您好,我在删除 yubikey Authentication 槽位下的证书又重新生成了一个之后 Show Public Keys 会把旧的公钥和新的公钥同时显示出来,并且如果再次删除旧的生成新的,Show Public Keys 就不会再出现公钥了,请问有办法解决吗
    swchzq
        10
    swchzq  
    OP
       2022-07-15 20:18:08 +08:00
    @yume233 去 certmgr.msc 里面把旧的证书删除了。如果不会再出现公钥,重新插拔 yubikey ,系统会重新读取证书。
    yume233
        11
    yume233  
       2022-07-23 20:51:47 +08:00
    @swchzq 恢复了!感谢楼主_(:з」∠)_
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4094 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 41ms UTC 00:11 PVG 08:11 LAX 16:11 JFK 19:11
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86