簡體   English   中英

SSH通過多跳進行遠程轉發

[英]ssh remoteforward over multiple hops

我正在嘗試一個多跳SSH隧道,該隧道需要雙向路由流量。 我的網絡配置是:

我的個人外殼在機器上
machineA可以SSH進入machineB
machineB可以SSH進入machineC
machineC通過以太網本地連接到machineD

在machineD上運行着一項服務,其中machineC將UDP數據包發送到machineD的portX,而machineD通過UDP將其答復發送到machineC的portY。

我已成功完成以下操作:
(來自機器A)
SSH機器B
(來自生成的shell)
SSH機器C
(來自生成的shell)
回顯“我的命令” | nc -u machineD portX#發送命令到machineD的服務
nc -ul portY#在machineC的端口上讀取結果

我想通過隧道完成所有這些操作,以便可以直接在計算機A上運行自定義腳本來制定服務命令並解析結果。 我在.ssh配置文件中嘗試了以下操作:

    host machineB
        hostname x.x.x.x
        user username_machineB
        localforward 1234 machineC:22

    host machineC
        hostname localhost
        user username_machineC
        port 1234
        localforward 1235 machineD:portX
        remoteforward 1236 localhost:portY

我以為可以做到以下幾點:
(來自機器A)
SSH機器B
(再次來自machineA)
SSH機器C
(再次來自machineA)
回顯“我的命令” | nc -u localhost 1235
數控-ul 1236

但是...似乎不起作用。 我看不到有關1236的任何預期答復。我不確定如何調試此消息。 我也不完全確定machineC的配置中“ localforward”和“ remoteforward”行的格式。 我不知道在評估這些行時誰將被解釋為“ localhost”。 我懷疑在machineC上可能禁用了遠程轉發,但是我想確保首先正確配置了所有其他內容。 我做錯了嗎?

或者,是否有另一種方法可以實現我的最終目標,而不必更改machineB,C或D上的任何配置? 我想做的是使用machineA以編程方式構造用於machineD的復雜命令,並使用machineA上的腳本來解析結果。

在執行此操作時,您必須向后思考。

因此,基本上machC可以與machD的portX對話。

因此,您真的想在machA上運行此代碼:

SSH機器

這是您的最終目標,因為該機器從machD發送和接收

現在您無法直接進入machC,這是您的ProxyCommand條目所在的位置。

host machC
    ProxyCommand ssh machB nc %h %p

因此,您說過machA可以轉換為machB沒問題。 現在,如果您這樣做:

ssh -v machC

您會看到它跳過那些事情。 但是,實際上您希望從machC到machD上的端口進行端口轉發和偵聽,因此您可以更改machC設置:

host machC
     ProxyCommand ssh machB nc %h %p
     # first part is port on your current shell, second part is relative to machC
     LocalForward 1234 machD:portX
     RemoteForward 1235 localhost:portY

因此,使用上面的示例:

host machineB
    hostname x.x.x.x
    user username_machineB

host machineC
    ProxyCommand ssh machineB nc %h %p
    hostname localhost
    user username_machineC
    localforward 1235 machineD:portX
    remoteforward 1236 localhost:portY

然后可以使用命令:

SSH機器C

使用-v查看躍點和隧道,如果您不關心獲取shell,請使用-N。 現在,您可以與本地主機的端口1235進行通信,以發送至machineD portX,並從1236進行讀取以偵聽machineC portY

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM