V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
fox0001
V2EX  ›  Linux

[请教]是否能够不分发私钥,实现多人共享 ssh 验证?

  •  
  •   fox0001 · 2022-09-02 08:17:59 +08:00 via Android · 4549 次点击
    这是一个创建于 848 天前的主题,其中的信息可能已经有所发展或是发生改变。

    外网有台 Linux 服务器,已配置好密钥登录 ssh 。

    需要办公室内的同事可以 ssh 进去维护服务器。简单粗暴的做法,把密钥复制到各个机器。或者服务器上的登录用户配置多个密钥。

    疑问是,能否不复制私钥,实现各个同事可以在办公室内网,通过 ssh 登录服务器?

    第 1 条附言  ·  2022-09-02 12:44:50 +08:00
    可以结贴了。jumpserver 、next-terminal 的方案,满足需求。

    @dingyaguang117
    @proxychains
    @yyf1234
    @lazyyz
    @jfj8848
    @Tink
    感谢推荐。
    34 条回复    2022-09-05 09:19:36 +08:00
    ruidoBlanco
        1
    ruidoBlanco  
       2022-09-02 08:21:44 +08:00
    host based authentication ,认机不认人。
    toaruScar
        2
    toaruScar  
       2022-09-02 08:25:21 +08:00   ❤️ 1
    可以用证书验证。
    生成一个 CA ,让服务器信任。让后用这个 CA 来签同事的公钥,同时写入 principal 。这样在服务器上设置一次某个用户允许哪些 principals 登录就行了。
    yyf1234
        3
    yyf1234  
       2022-09-02 08:33:05 +08:00 via iPhone   ❤️ 1
    堡垒机
    NessajCN
        4
    NessajCN  
       2022-09-02 08:33:53 +08:00
    那你就开密码登录呗...
    fox0001
        5
    fox0001  
    OP
       2022-09-02 08:36:03 +08:00 via Android
    @NessajCN #4 就是不想分发验证信息,包括密钥、密码之类
    villivateur
        6
    villivateur  
       2022-09-02 08:41:04 +08:00   ❤️ 5
    那你就把每个同事电脑的公钥都放在这台服务器上呗
    bruce0
        7
    bruce0  
       2022-09-02 08:50:35 +08:00
    蹲一个靠谱的方案, 我们也有你这样的需求, 有多台机器(比如 20 太机器), 都要做权限管理就很麻烦. 之前查过资料, 有推荐 VPN 的, 要连的机器, 只能通过特定的 ip 连接, 假设为机器 A, 目标机只能通过 A 连接, A 同时只能通过 VPN 连接上去,然后可以通过 VPN 控制权限. 还一种方案就是跳板机, 假设为机器 B, 只能通过 B 连接目标机, 不同人拥有 B 的访问权限, 控制 B 的访问权限, 就可以控制所有机器的
    dingyaguang117
        8
    dingyaguang117  
       2022-09-02 08:55:50 +08:00 via iPhone
    有一些开源的跳板机系统,权限管理带 webui 的
    ZE3kr
        9
    ZE3kr  
       2022-09-02 08:57:41 +08:00 via iPhone
    做个 WebSSH ,之前用 Cloudflare Teams 就可以做到这个,支持 SSO 登陆进入 SSH 页面
    fox0001
        10
    fox0001  
    OP
       2022-09-02 08:59:44 +08:00 via Android
    @dingyaguang117 #8 我也有类似的想法。比如局域网内部署一个 cPanel 、宝塔之类的系统,只能局域网内访问,里面配置好 ssh 私钥。打开那系统就能 ssh 到 Linux 服务器上。但是不知道用哪个…
    huangmingyou
        11
    huangmingyou  
       2022-09-02 09:02:32 +08:00   ❤️ 1
    开源的 jumpserver 不错,可以实现
    apake
        12
    apake  
       2022-09-02 09:19:02 +08:00 via Android
    1 跳板机,所有人登入跳板机,再登录服务器。2 服务器启动 jupyter ,浏览器就可以登录终端了
    dingyaguang117
        13
    dingyaguang117  
       2022-09-02 09:19:18 +08:00 via iPhone   ❤️ 1
    @fox0001 jumpserver 就挺好
    dddd1919
        14
    dddd1919  
       2022-09-02 09:19:43 +08:00   ❤️ 2
    关键字 authorized_keys
    ytmsdy
        15
    ytmsdy  
       2022-09-02 09:22:51 +08:00   ❤️ 1
    把需要登录服务器的同事的公钥收集一下,然后都放到服务器上不就完了么。
    byte10
        16
    byte10  
       2022-09-02 09:24:51 +08:00
    (⊙o⊙)。xshell 的毒,预留了一个私钥的登录给你们,导致你们不知道可以使用公钥免密登录?关键字 authorized_keys
    proxychains
        17
    proxychains  
       2022-09-02 09:26:11 +08:00   ❤️ 1
    jumpserver 堡垒机
    lazyyz
        18
    lazyyz  
       2022-09-02 09:29:46 +08:00 via Android   ❤️ 1
    轻量的推荐 next-terminal ,我自己在用,挺方便的
    microxiaoxiao
        19
    microxiaoxiao  
       2022-09-02 09:40:12 +08:00 via Android
    搞个免密码登录到远程服务器的 linux 内网跳板机,然后在内网跳板机上面用 iptables 开白名单。迁移也简单
    microxiaoxiao
        20
    microxiaoxiao  
       2022-09-02 09:43:09 +08:00 via Android
    哦,对了。同事的终端可以选择 mobaxterm ,变个启动脚本,这样登录跳板机自动 ssh 到远程服务器。
    Tink
        21
    Tink  
       2022-09-02 09:53:21 +08:00   ❤️ 1
    堡垒机
    jfj8848
        22
    jfj8848  
       2022-09-02 09:54:22 +08:00   ❤️ 1
    跳板机 堡垒机
    robinfai9
        23
    robinfai9  
       2022-09-02 10:07:00 +08:00
    teleport ?
    nothingistrue
        24
    nothingistrue  
       2022-09-02 10:17:43 +08:00
    没有私钥不行,因为根据私钥可以设置 pin 码这情况看,客户端每次登录都是要拿私钥重新生成签名的。

    但是有一个方向楼主搞错了,SSH 无密码登录,不是服务器生成密钥对再分发的方向,而是客户端自行生成密钥对后把公钥报给服务器。这个方向是客户端主服务端从,不是服务器端主客户端从。当要在不吊销用户的情况下单独吊销登录凭证的时候,服务器唯一能做的就是 authorized_keys 中移除对应的公钥。所以这里建议要么一用户一人,要么一密钥对一人,不能共享的。
    dacapoday
        25
    dacapoday  
       2022-09-02 10:21:46 +08:00
    tailscale magic ssh
    subpo
        26
    subpo  
       2022-09-02 10:23:06 +08:00   ❤️ 3
    虽然但是 啥时候 ssh 登录需要复制私钥了?
    是我没看懂问题,还是现在 v2 水平这么奇怪了
    sampeng
        27
    sampeng  
       2022-09-02 10:27:37 +08:00
    ssh 还能这么用?你这不就是要一个堡垒机??
    机器不多,你应该是找每个人要自己的公钥啊。。。。是我年纪太大理解错了?
    wooyuntest
        28
    wooyuntest  
       2022-09-02 10:29:13 +08:00
    建议堡垒机,还得配合其他的措施才能尽量控制违规登录。
    比如用户通过堡垒机登录成功以后 自己在 authorized_keys 加一个公钥怎么办?
    用户通过堡垒机登录成功以后 自己用 nc socat 等等工具反弹一个 shell 到自己的服务器上 怎么办?
    有好多维度都是需要考虑的。
    11232as
        29
    11232as  
       2022-09-02 10:41:18 +08:00
    为啥要分发私钥...
    Xusually
        30
    Xusually  
       2022-09-02 10:47:19 +08:00
    为什么要复制私钥?

    在服务器上启用公钥验证登录,把要登陆的用户的公钥都加入到 authorized_keys 里就行了啊。

    私钥怎么会需要分发?
    stoluoyu
        31
    stoluoyu  
       2022-09-02 11:31:26 +08:00
    有什么原因导致你不能把你同事的公钥放到服务器的 authorized keys 呢。
    lakehylia
        32
    lakehylia  
       2022-09-02 11:49:19 +08:00
    一人一把钥匙啊,你自己生成一堆钥匙,公钥放服务器,一个私钥给一个人。如果要剔除某个人,就把某个人的私钥对应的公钥从服务器移除啊。
    fox0001
        33
    fox0001  
    OP
       2022-09-02 12:47:09 +08:00 via Android   ❤️ 1
    @stoluoyu #31
    1 )生产机

    2 )安全意识淡薄。例如:丢了办公室钥匙可以不报告,自己去配一个

    3 )上面要求
    julyclyde
        34
    julyclyde  
       2022-09-05 09:19:36 +08:00
    forward agent
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2860 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 08:34 · PVG 16:34 · LAX 00:34 · JFK 03:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.