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 · 3721 次点击
    这是一个创建于 860 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    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
    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  
       2022-07-22 01:07:24 +08:00 via Android
    ssh 打洞啊
    Blacate
        27
    Blacate  
       2022-07-22 01:37:57 +08:00 via iPhone
    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   ·   实用小工具   ·   1498 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 17:11 · PVG 01:11 · LAX 09:11 · JFK 12:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.