Distributions
› Ubuntu
› Fedora
› CentOS
中文资源站
› 网易开源镜像站
jdz
V2EX  ›  Linux

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

  •  
  •   jdz · Jul 21, 2022 · 5368 views
    This topic created in 1573 days ago, the information mentioned may be changed or developed.

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

    36 replies  •  2022-08-18 16:14:14 +08:00
    jagger2048
    jagger2048
    Jul 21, 2022
    1
    用 zerotier 自建局域网,公网服务器 c 做 moon
    dcty
    dcty
    Jul 21, 2022 via Android
    2
    临时传文件的话 piping 试试看
    beginor
    beginor
    Jul 21, 2022 via Android
    3
    在 C 上装个 frp ?
    devour
    devour
    Jul 21, 2022
    4
    ssh 隧道就可以了吧
    wooyuntest
    wooyuntest
    Jul 21, 2022
    5
    wireguard
    1041412569
    1041412569
    Jul 21, 2022 via Android
    6
    不能把 A 上传文件到 C 硬盘,然后 B 下载吗
    32uKHwVJ179qCmPj
    32uKHwVJ179qCmPj
    Jul 21, 2022
    7
    同时连接到公网机器的 ssh 做端口映射(其实也就是穿透)
    chapiom
    chapiom
    Jul 21, 2022
    8
    ssh 连上 C ,scp 从 AB 之间传文件
    jdz
    jdz
    OP
    Jul 21, 2022
    9
    @1041412569 可以 但是麻烦 我想一步完成
    cxtrinityy
    cxtrinityy
    Jul 21, 2022❤️1
    10
    我说个简单的, 通过 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
    xxb
    Jul 21, 2022 via iPhone
    11
    Tailscale 最簡單
    zwlinc
    zwlinc
    Jul 21, 2022
    12
    C 上装 frp 和 ssh tunnel 效果差不多,这两种情况的带宽都取决于 C ,如果 A ,B 能通过 zerotier 直连,应该效果最好。
    enrolls
    enrolls
    Jul 21, 2022❤️1
    13
    @cxtrinityy 的方法就是最简单(低依赖,无组件)的。

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

    方法之二:
    在 C 上面开个 ftp ,AB 两边挂载?
    FrankAdler
    FrankAdler
    Jul 21, 2022 via iPhone
    14
    试试 rz sz 这类的呢,ssh 能连上去就可以传文件了
    dushixiang
    dushixiang
    Jul 21, 2022 via iPhone
    15
    不知道我这个程序行不行

    https://github.com/dushixiang/4dnat
    FindHao
    FindHao
    Jul 21, 2022
    16
    设置下 ssh 的 config 文件,用 ProxyJump 就行啊。简单来说就是 ssh 跳板,设置好 key 和三台机器的~/.ssh/config ,就可以直接在 A 上 ssh c 或者 scp 或者 rsync 之类的了
    humbass
    humbass
    Jul 21, 2022
    17
    FindHao
    FindHao
    Jul 21, 2022
    18
    @FindHao 额,忽略我的方法。我本来意思是 ssh B jump through C 。但是发现公网服务器 C 看不到 B 。
    heiher
    heiher
    Jul 21, 2022 via Android
    19
    ssh 自带这个功能,参数 -J

    on host b:
    ssh -J user@host_c user@host_c
    heiher
    heiher
    Jul 21, 2022 via Android
    20
    typo:

    on host b:
    ssh -J user@host_c user@host_a
    czyt
    czyt
    Jul 22, 2022
    21
    ssh -R ssh- CNL
    changz
    changz
    Jul 22, 2022 via Android❤️1
    22
    netcat 了解下,网络开发的瑞士军刀
    1024cai
    1024cai
    Jul 22, 2022
    23
    n2n ,可以把两个不同内网的机器组成一个内网,然后像内网操作一样直接操作对方即可
    shynome
    shynome
    Jul 22, 2022 via Android
    24
    不能组 VPN 的可以考虑我的方案,记得设好防火墙,只允许 A 、B 访问 C 的特定端口段
    https://github.com/shynome/sshd-proxy
    wslzy007
    wslzy007
    Jul 22, 2022❤️1
    25
    @jdz 推荐 SG ( github.com/lazy-luo/smarGate )
    如果 A 和 B 能 P2P ,你可以将 B/A 上的 tcp 端口直接映射到 A/B 上
    Tink
    Tink
    Jul 22, 2022 via Android
    26
    ssh 打洞啊
    Blacate
    Blacate
    Jul 22, 2022 via iPhone
    27
    scp -3
    ToBeHacker
    ToBeHacker
    Jul 22, 2022
    28
    libnice
    fonlan
    fonlan
    Jul 22, 2022 via Android
    29
    C 上架个 rclone server 然后 A 和 B 装 client 和 C 同步?
    qbuer
    qbuer
    Jul 22, 2022
    30
    如果要一步完成一定得穿透吧。我的方案是在公网服务器开 openvpn ,并开启 vpn 客户端互相访问。客户端间就可以相互 ssh 了
    Davic1
    Davic1
    Jul 22, 2022
    31
    ssh 隧道.
    kaedeair
    kaedeair
    Jul 22, 2022
    32
    用 ssh 反向代理
    litec
    litec
    Jul 22, 2022❤️1
    33
    前面很多留言都有提到了,用 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
    MstMoonshine
    Jul 22, 2022
    34
    如果需要拷贝文件的时候你同时可以访问 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
    7RTDKSAK
    Aug 4, 2022
    35
    croc 开 relay,楼主你信我没错
    linuxgo
    linuxgo
    Aug 18, 2022
    36
    从 A sftp B 或者从 B sftp A
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2334 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 90ms · UTC 00:18 · PVG 08:18 · LAX 16:18 · JFK 19:18
    ♥ Do have faith in what you're doing.