(A)、(B)をスキップしてアクセスできるローカルコンピュータ(L)とリモートコンピュータ(R)があります。
ファイルを転送するための一般的なルーチンは次のとおりです。
l@L$ ssh -t a@A ssh -t b@B ssh r@R
r@R$ # do some stuff till I find out I want to copy file x to L
次に、新しい端末を開きます。
l@L ssh a@A
a@A ssh b@B
b@B scp r@R:PATH_TO_FILE a@A:TEMP
b@B <ctrl-D> to close
a@A scp TEMP r@R l@L:FINAL_DESTINATION
そしてscp
私のすべてのホップのためのファイル。
Rから直接ファイルをコピーできるシェル拡張子またはプログラムがあるかどうか疑問に思います。 stdout @ Rをstdin @ Lにパイピングしてキャッチするのと似ています。非常に効率的である必要はありません。ほとんどの場合、私のファイルは小さいですが(100kB未満)、バイナリをサポートする必要があります。
答え1
ssh
構成を確認したい場合がありますProxyCommand
。これにより、作業がよりスムーズになり、シェル、SFTP、トンネル、およびSSHを介してプロキシしたいすべての項目に対して機能します。
次の 3 つのホストがあるとします。
workstation.example.com
- これはあなたが作業している機械です。proxy.example.com
- SSH トラフィックをルーティングするマシンです。endpoint.example.com
- ここがトラフィックが終わりたい場所です。
~/.ssh/config
on にworkstation
以下を追加します。
Host endpoint
User WorkstationUser # set this to the username on the workstation host
HostName endpoint.example.com
ProxyCommand ssh [email protected] nc %h %p 2> /dev/null
proxy
ホストシステムにnc
(netcat)がインストールされていることを確認してください。
その後、プロキシホストを介してそのシステムに透過的にプロキシを使用できますworkstation
。ssh endpoint
sftp endpoint