V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jmyz0455
V2EX  ›  信息安全

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

  •  
  •   jmyz0455 · 2021-03-02 14:34:43 +08:00 · 2098 次点击
    这是一个创建于 1381 天前的主题,其中的信息可能已经有所发展或是发生改变。
    刚开始接触 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   ·   实用小工具   ·   2966 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 11:42 · PVG 19:42 · LAX 03:42 · JFK 06:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.