ローカルマシンからはアクセスできない方法よりも、SFTPサーバー上のファイルにアクセスできるようにする方法を考えています。現在、リモートサーバー(最終的なSFTPサーバーが受け入れる特定のIPブロック内にあります)にSSHで接続し、そこから宛先サーバーにSFTPで接続する必要があります。そこから、関心のあるファイルをget
し、それによってそれらを仲介サーバーにドロップします。そこから、Samba共有を介して、または直接scp
を使用してファイルを取得できます。また、ファイルを仲介者にドロップし、SSHで転送し、SFTPで宛先に移動し、put
を適切なフォルダーに入れます。
私の目標はこれを短くすることです。残念ながら、私のマシンはWindows(KiTTyやCygwinを使用)であり、仲介サーバー(または宛先サーバー)を変更することはできません。それが機能し、無料である限り、私はコマンドラインまたはGUIプログラムを使用するつもりです。
何か案は?
本質的に、GUIまたは他の便利さなしで:
ssh -o ProxyCommand='ssh myfirsthop nc -w 10 %h %p' mydestination
設定ファイルを編集することで、これをデフォルトにすることができます。デフォルトでは〜/ .ssh/config
Host mydestination, mydest2, mydest3
ProxyCommand ssh myfirsthop nc -w 10 %h %p
これにより、次のことが可能になります
ssh mydestination
scp mydest2:file.txt ./
scp file.txt mydest3:/tmp/
もちろん、そのような魔法を使えば簡単にできます
mkdir -pv /tmp/mydest3tmp # create mountpoint
sshfs mydest3:/tmp /tmp/dest3tmp/ # mount :)
Windowsでは、(IIRCだと思いますが)PLINK(PuTTYスイートから)に付属しているWinSCPを使用します。 ssh config
ファイルのデフォルトの場所は異なると思いますが(グーグルで検索する必要があります)、ほぼ同じように機能すると確信しています。
これが機能するために必要なのは、ミドルサーバー(ファーストホップ)の「netcat(nc
)」だけであることに注意してください。これは、linux/UNIX [1]のユビキタスツールです。静的にリンクされたバージョンを構築するのは非常に簡単です。最初にそこにコピーできれば、機能するはずです。
[1]いくつかのフレーバーがあるため、-wオプションのドロップ/スペルを変える必要がある場合があることに注意してください
@seheと@Jakubなしではこれを見つけることができなかったので、これを受け入れられた回答として設定するつもりはありませんが、すべてを簡素化するためにここに見つけたものがあります...
WinSCPには、組み込みのSSHトンネルを使用する機能があります。この機能がいつ到着したかはわかりませんが、どういうわけか以前は気づきませんでした。
私の提案の1つは、(Windowsボックスから)PuTTYを使用してsocksプロキシを作成し、それを介してSFTPクライアントをプロキシすることです(たとえば、Filezilla sftp)。
その方法で特別なことをする必要はありません。PuTTYsocks5プロキシをオンにし、filezillaをオンにして、ファイルを宛先サーバーにsftpします。
(you ==socks5 proxy==> middle server) ==> destination server