我有两台不在同一局域网的内网 Linux 机器 A, B, 还有一个公网服务器 C, A 可以 ssh 到 C, B 也可以, 我有什么办法通过 C 来实现 A B 通信么? 或者 A 直接拷贝文件给 B - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
jdz
V2EX    Linux

我有两台不在同一局域网的内网 Linux 机器 A, B, 还有一个公网服务器 C, A 可以 ssh 到 C, B 也可以, 我有什么办法通过 C 来实现 A B 通信么? 或者 A 直接拷贝文件给 B

  •  
  •   jdz 2022-07-21 18:30:22 +08:00 4297 次点击
    这是一个创建于 1185 天前的主题,其中的信息可能已经有所发展或是发生改变。

    不考虑穿透(公司不允许)

    36 条回复    2022-08-18 16:14:14 +08:00
    jagger2048
        1
    jagger2048  
       2022-07-21 18:35:42 +08:00
    用 zerotier 自建局域网,公网服务器 c 做 moon
    dcty
        2
    dcty  
       2022-07-21 18:36:58 +08:00 via Android
    临时传文件的话 piping 试试看
    beginor
        3
    beginor  
       2022-07-21 18:40:19 +08:00 via Android
    在 C 上装个 frp ?
    devour
        4
    devour  
       2022-07-21 18:41:05 +08:00
    ssh 隧道就可以了吧
    wooyuntest
        5
    wooyuntest  
       2022-07-21 18:41:15 +08:00
    wireguard
    1041412569
        6
    1041412569  
       2022-07-21 18:41:52 +08:00 via Android
    不能把 A 上传文件到 C 硬盘,然后 B 下载吗
    32uKHwVJ179qCmPj
        7
    32uKHwVJ179qCmPj  
       2022-07-21 18:45:02 +08:00
    同时连接到公网机器的 ssh 做端口映射(其实也就是穿透)
    chapiom
        8
    chapiom  
       2022-07-21 18:50:47 +08:00
    ssh 连上 C ,scp 从 AB 之间传文件
    jdz
        9
    jdz  
    OP
       2022-07-21 18:53:04 +08:00
    @1041412569 可以 但是麻烦 我想一步完成
    cxtrinityy
        10
    cxtrinityy  
       2022-07-21 19:01:09 +08:00   1
    我说个简单的, 通过 ssh tunnel 来 scp
    先用 ssh tunnel 通过 C 建立和 B 的连接: ssh -L 12345:C 可用来访问 B 的 IP:22 user@C, 意思就是 ssh 到 C 上, 然后转发本地 12345 端口上的请求到 B 的 22 端口
    之后 A 从 B 下文件: scp -P 12345 B 的 [email protected]:/B 文件路径 本地保存路径
    或者 A 给 B 传文件, 就是 scp 正常的用法

    好久没用过 ssh tunnel 了, 应该没错
    xxb
        11
    xxb  
       2022-07-21 19:13:53 +08:00 via iPhone
    Tailscale 最
    zwlinc
        12
    zwlinc  
       2022-07-21 20:23:46 +08:00
    C 上装 frp 和 ssh tunnel 效果差不多,这两种情况的带宽都取决于 C ,如果 A ,B 能通过 zerotier 直连,应该效果最好。
    enrolls
        13
    enrolls  
       2022-07-21 20:43:46 +08:00   1
    @cxtrinityy 的方法就是最简单(低依赖,无组件)的。

    方法之一:
    [新 V2Ray 白话文指南]( https://guide.v2fly.org/app/reverse.html#%E5%8E%9F%E7%90%86)

    方法之二:
    在 C 上面开个 ftp ,AB 两边挂载?
    FrankAdler
        14
    FrankAdler  
       2022-07-21 21:03:04 +08:00 via iPhone
    试试 rz sz 这类的呢,ssh 能连上去就可以传文件了
    FreeEx
        15
    FreeEx  
       2022-07-21 23:17:36 +08:00 via iPhone
    不知道我这个程序行不行

    https://github.com/dushixiang/4dnat
    FindHao
        16
    FindHao  
       2022-07-21 23:36:06 +08:00
    设置下 ssh 的 config 文件,用 ProxyJump 就行啊。简单来说就是 ssh 跳板,设置好 key 和三台机器的~/.ssh/config ,就可以直接在 A 上 ssh c 或者 scp 或者 rsync 之类的了
    humbass
        17
    humbass  
       2022-07-21 23:37:08 +08:00
    不就是这个问题吗

    t/867004#reply16
    FindHao
        18
    FindHao  
       2022-07-21 23:37:27 +08:00
    @FindHao 额,忽略我的方法。我本来意思是 ssh B jump through C 。但是发现公网服务器 C 看不到 B 。
    heiher
        19
    heiher  
       2022-07-21 23:57:27 +08:00 via Android
    ssh 自带这个功能,参数 -J

    on host b:
    ssh -J user@host_c user@host_c
    heiher
        20
    heiher  
       2022-07-21 23:58:38 +08:00 via Android
    typo:

    on host b:
    ssh -J user@host_c user@host_a
    czyt
        21
    czyt  
       2022-07-22 00:08:23 +08:00
    ssh -R ssh- CNL
    changz
        22
    changz  
       2022-07-22 00:14:39 +08:00 via Android   1
    netcat 了解下,网络开发的瑞士军刀
    1024cai
        23
    1024cai  
       2022-07-22 00:21:47 +08:00
    n2n ,可以把两个不同内网的机器组成一个内网,然后像内网操作一样直接操作对方即可
    shynome
        24
    shynome  
       2022-07-22 00:29:10 +08:00 via Android
    不能组 VPN 的可以考虑我的方案,记得设好防火墙,只允许 A 、B 访问 C 的特定端口段
    https://github.com/shynome/sshd-proxy
    wslzy007
        25
    wslzy007  
       2022-07-22 00:53:37 +08:00   1
    @jdz 推荐 SG ( github.com/lazy-luo/smarGate
    如果 A 和 B 能 P2P ,你可以将 B/A 上的 tcp 端口直接映射到 A/B 上
    Tink
        26
    Tink  
    PRO
       2022-07-22 01:07:24 +08:00 via Android
    ssh 打洞啊
    Blacate
        27
    Blacate  
       
    scp -3
    ToBeHacker
        28
    ToBeHacker  
       2022-07-22 08:20:39 +08:00
    libnice
    fonlan
        29
    fonlan  
       2022-07-22 08:41:54 +08:00 via Android
    C 上架个 rclone server 然后 A 和 B 装 client 和 C 同步?
    qbuer
        30
    qbuer  
       2022-07-22 08:50:58 +08:00
    如果要一步完成一定得穿透吧。我的方案是在公网服务器开 openvpn ,并开启 vpn 客户端互相访问。客户端间就可以相互 ssh 了
    Davic1
        31
    Davic1  
       2022-07-22 09:15:49 +08:00
    ssh 隧道.
    kaedeair
        32
    kaedeair  
       2022-07-22 09:28:15 +08:00
    用 ssh 反向代理
    litec
        33
    litec  
       2022-07-22 09:33:14 +08:00   1
    前面很多留言都有提到了,用 config 的可以,是在 A machine 上的.ssh/config ,
    之後可以 ssh user@B or scp file user@B:destination 成你要的目的
    Host B
    HostName ip of B
    ProxyCommand ssh -q -W %h:%p C

    Host C
    HostName ip of C
    MstMoonshine
        34
    MstMoonshine  
       2022-07-22 18:50:08 +08:00
    如果需要拷贝文件的时候你同时可以访问 A 和 B 的话,可以考虑使用 Magic Wormhole ( https://github.com/magic-wormhole/magic-wormhole)。在 A 上执行 wormhole send [path_to_file],A 上会生成一个简单的 token (比如:9-monument-keyboard ),然后在 B 上执行 wormhole receive [token] 即可(比如 wormhole receive 9-monument-keyboard )。

    如果不能同时访问 A 和 B 的话,就还是考虑 frp ( https://github.com/fatedier/frp )、ssh tunnel 之类的。
    7RTDKSAK
        35
    7RTDKSAK  
       2022-08-04 20:18:46 +08:00
    croc 开 relay,楼主你信我没错
    linuxgo
        36
    linuxgo  
       2022-08-18 16:14:14 +08:00
    从 A sftp B 或者从 B sftp A
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2494 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 10:50 PVG 18:50 LAX 03:50 JFK 06:50
    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