你们是如何管理自己 ssh-key 的? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jmyz0455
V2EX    信息安全

你们是如何管理自己 ssh-key 的?

  •  
  •   jmyz0455 2021-03-02 14:34:43 +08:00 2420 次点击
    这是一个创建于 1691 天前的主题,其中的信息可能已经有所发展或是发生改变。
    刚开始接触 Linux 、git 的时候,不清楚 ssh-key 是什么来的,只知道是个身份凭证来的,教程说要 ssh-keygen -C email.com 我就按着来生成密钥了,一开始只是一台 Thinkpad 生成一个 ssh-key 给一台 vps 用,后来变成一台 tp 的密钥配置到几台 vps 上用。

    最初以为 key 只是 tp 的一个身份信息,告诉多台 vps 我是本人我要开门了。后来新买了 iMac,发现 Linux 上一个 user 貌似只能配置一个 ssh-key 登录?索性 iMac 没有新增 ssh-key,还是用的 tp 上的 ssh-key 。然后新公司配置了 mbp,才发现我一直都是一个 ssh-key 走天下,相当于多个客户端都在用同一个 ssh-key 访问多个 vps,要是 ssh-key 被偷了,那我相当于全部 vps 都能被随意出入了。

    而且我自己用的 GitHub,和小伙伴一起用 GitLab,公司用 Gitee,然后被提醒公司的代码提交需要带公司的邮箱,而不是我私人的邮箱,我终于觉得是时候管理众多 ssh-key 了。

    我现在觉得 ssh-key 是一个钥匙,应该一个台 vps 的 user 只对应一个 ssh-key,GitHub 、GitLab 、Gitee 应该也分开三个 ssh-key,他们之间不应该共用,请问这个思路对吗?

    还有,我还想确认下是不是 Ubuntu 下,一个 user 只能用一个 ssh-key 登录?因为试过有朋友也想登录我的 vps,我不想把我的 ssh-key 给他,想另外生成一个 ssh-key 然后新建一个用户让他自己弄,但是他想用我 Ubuntu 的 user,那我可以给一个 user 配置两个 ssh-key 的嘛?
    8 条回复    2021-04-19 14:54:36 +08:00
    laydown
        1
    laydown  
       2021-03-02 14:47:35 +08:00
    一个走天下即可。被偷了也没事啊,别人基本不知道你拿来登哪台 vps 。。。
    jmyz0455
        2
    jmyz0455  
    OP
       2021-03-02 15:15:45 +08:00
    @laydown 真的?原来大家都是这么做的?
    xderam
        3
    xderam  
       2021-03-02 16:32:47 +08:00
    私钥可以加个密码 多 key 管理管理成本确实有点高。 不过有一个规则就是公私分明,如果这个私钥只有自己用。爱怎么用怎么用。如果是用于系统之间免密啥的建议还是有点管理比较好。
    jmyz0455
        4
    jmyz0455  
    OP
       2021-03-02 18:03:59 +08:00
    @xderam 明白
    mschultz
        5
    mschultz  
       2021-03-23 21:22:06 +08:00
    个人的话一 key 走天下,这个 key 做好安全措施,例如只存放于自己的个人电脑中,并设置 Passphrase ;或者直接塞进 YubiKey 里,甚至可以插到陌生电脑上使用,由硬件设计保证私钥不泄露。公司身份的话另说。

    如果连上服务器之后,需要在服务器端操作 git 、gpg 等需要私钥的软件,应该采用 ForwardAgent 和 RemoteForward 来转发本地 ssh-agent/gpg-agent 到服务器,而不应在服务器上放置私钥。

    如果服务器上有什么定时任务或钩子需要无人值守地调用私钥,比如定时推送 /拉取某个 git 仓库的内容,那么建议使用范围精确有限的私钥。例如专门生成一个私钥,这个私钥只有访问那一个特定仓库执行特定操作的权限,而没有访问整个 GitHub/GitLab 账号的权限。
    mschultz
        6
    mschultz  
       2021-03-23 21:25:27 +08:00
    另外,你这个「然后被提醒公司的代码提交需要带公司的邮箱,而不是我私人的邮箱」,这个要求其实和 SSH 私钥没有必然的关系,这个只是 git 的设置。

    比如你的 git 全局设置 git config --global user.email 是你的私人邮箱,但是你公司代码那个仓库里面还可以有一个局部的 .git/config 文件,也就是 git config user.email <公司邮箱>,这个设置的作用域仅限你公司代码那个文件夹。

    至于推送代码时用来认证的 SSH 私钥,其实还是可以用你私人的。
    jmyz0455
        7
    jmyz0455  
    OP
       2021-03-24 09:35:09 +08:00
    @mschultz ssh 和 git 设置这个说得很好,非常感谢,之前一直都不知道是哪里出错了。一 key 走天下,需要几年更新一下的嘛?
    YubiKey ForwardAgent RemoteForward 权限有限私钥这些我都不懂,这就去查一下。
    dzdh
        8
    dzdh  
       2021-04-19 14:54:36 +08:00
    每次在新设备上使用都会生成一个新的 key ( git 、ssh ) ssh 通过云平台在线 append key
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     985 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 18:56 PVG 02:56 LAX 11:56 JFK 14:56
    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