V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Cat7373
V2EX  ›  问与答

怎样能做一个 SSH 区分账户的代理?

  •  
  •   Cat7373 · 2022-09-02 13:54:28 +08:00 · 807 次点击
    这是一个创建于 814 天前的主题,其中的信息可能已经有所发展或是发生改变。

    需求是这样的,有一台公网服务器(下称 A ),A 服务器 SSH 端口是正常的 22 ,日常维护即使用 22 登陆;

    现在 A 服务器新建账户,如 V2EX ,在起 authorized_keys 中添加公钥;

    另有一个服务器(下称 B ),无公网 IP ,与 A 内网互通;

    需实现 SSH 级代理,使 A 和 B 共用 A 上的 22 端口,通过 V2EX 认证时,自动代理到 B 服务器(并执行 B 服务器上 authorized_keys 中指定的程序),通过其他用户名认证时,正常登陆到 A 服务器;

    大概如图所示,求问大佬们如何实现此类代理:

    4 条回复    2022-09-02 14:47:30 +08:00
    ljpCN
        1
    ljpCN  
       2022-09-02 13:59:23 +08:00
    换个思路,用不同的域名区分目标机器,所有的域名解析到 A ,A 上面跑一个 nginx 根据域名转发到不同的机器。
    Cat7373
        2
    Cat7373  
    OP
       2022-09-02 14:00:31 +08:00 via iPhone
    @ljpCN #1 可要处理的是 ssh 请求,不是 http ,而且 22 端口不能换
    eason1874
        3
    eason1874  
       2022-09-02 14:04:57 +08:00
    修改服务器的 sshd_config

    Match User v2ex
    ForceCommand "这里写登录内网机器命令,应该可以吧"
    LxnChan
        4
    LxnChan  
       2022-09-02 14:47:30 +08:00
    我经历过一个本质上差不多的过程,应该可以参考一下

    https://lxnchan.cn/git-operas.html#%E5%8D%95%E6%9C%BA%E5%A4%9AGithub%E8%B4%A6%E5%8F%B7
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1228 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 18ms · UTC 17:40 · PVG 01:40 · LAX 09:40 · JFK 12:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.