Yanıtlar:
Yerel makinenizden ara ana bilgisayardan son ana bilgisayara am SSH tüneli oluşturabilirsiniz:
ssh user@intermediate -L 2000:final:22 -N
Bu, yerel ana makinenizdeki bağlantı noktası 2000'i, ara ana bilgisayar üzerinden tünelleme yoluyla doğrudan bağlantı noktası 22 üzerindeki son sunucuya bağlanacak. Şimdi başka bir istemde, son sunucuya tünellenecek 2000 bağlantı noktasındaki sftp ile bağlanın, burada belirtilen kullanıcının son ana bilgisayar için olduğunu not edin:
sftp -P 2000 user@localhost
Bu superuser.com veya serverfault.com'a ait gibi görünüyor .
SFTP bağlantısını bir SSH bağlantısı üzerinden şeffaf olarak tünellemek için SFTP'nin ProxyCommand seçeneğini kullanabilirsiniz (iletilen yerel TCP bağlantı noktası yerine WhiteFang34'ün cevabına biraz benzer, ancak SSH bağlantısının stdin & stdout'u üzerinden):
sftp -o "ProxyCommand=ssh -e none user@intermediatehost exec /usr/bin/nc %h %p 2>/dev/null" user@finalhost
(Bu, ara ana bilgisayarda netcat'in / usr / bin / nc olarak yüklü olduğu varsayılır - değilse, stdin ve stdout'u TCP oturumuna yönlendirmenin eşdeğer bir yolunu bulmanız / yüklemeniz gerekebilir.)
Bu seçenekle ilgili gerçekten harika olan şey, ~ / .ssh / config dosyanıza ekleyebilmenizdir, bu da saydam hale getirir:
Host finalhost
ProxyCommand ssh -e none user@intermediatehost exec nc %h %p 2>/dev/null
Bu girişle, shostp, scp ve ssh komutlarını finalhost'a kullanabilirsiniz ve otomatik olarak tüneli çağıracaktır. Şeffaf olmayan tek parça, iki parola isteyecek (ara ana bilgisayar ve ardından finalhost), ancak isterseniz SSH anahtar çiftleriyle de ortadan kaldırabilirsiniz ...
exec
gerekli? (Bu bölüm olmadan burada iyi çalışır.)
Verileri makinenizde çalışan ssh işlemine aktarabilir, sonra ara makinede stdin yazan ve uygun şekilde sftp'ye gönderen bir komut çalıştırabilirsiniz.
Bu, yerel makinenizdeki bir oneliner'da yapılabilir, ancak ssh'ye argümanların alıntılanması bakım gerektirecektir. Şu anda telefonumdayım, bu yüzden maalesef ayrıntıları yazamıyorum. Belki başka biri bu cevabı bir egzersiz olarak tamamlayabilir!
Son ana bilgisayarın güvenlik duvarı olduğunu ve sadece dolaşmak için kullanabileceğiniz yöntemleri tahmin edebileceğimi varsayıyorum.
Örneğin - ssh'yi yerel makinenizden, sonra ssh'ı ilk ana bilgisayara, sonra ssh'ı ikinci makineye ve sftp'yi son ana makineden makinenize gösterin.
Diyelim ki A ve B birinci ve ikinci ana bilgisayarlar. Ve kopyalanacak dosya foo
Sftp yerine aşağıdakileri kullanabilirsiniz
kedi foo | ssh A "kedi -> foo"
Şimdi bunlardan 2 tanesini zincirleme yapabilirsiniz
kedi foo | ssh Bir "kedi - | ssh B \" kedi -> foo \ ""