Bir ara sunucuya bağlanmalı mıyım?


11

Doğrudan belirli bir ana bilgisayara sftp olamaz. Bir dosyayı ev makinemden ana bilgisayara taşımak için, bir dosyayı ara ana bilgisayara sftp etmeliyim; ara konağa ssh; ve dosyayı son hedefe sftp. Böyle bir delilikten kaçınmak mümkün mü?

Yanıtlar:


28

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 .


Teşekkürler, bunu deneyeceğim; ve haklısın yanlış forum; üzgünüm.

User @ localhost şifresini verdikten sonra şu mesajı aldım: Alınan mesaj çok uzun 1131376238
user74094

14

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 ...


Teşekkürler Gordon. Her iki şifreyi de alır ve mesajla birlikte durur: Alınan mesaj çok uzun 1131376238
user74094

Bağlantıdaki bir şeye benziyor - belki ana bilgisayarlardan birinde bir giriş komut dosyası, belki nc - sftp'yi kafa karıştırıcı bağlantı üzerine fazladan bir metin yazıyor ( snailbook.com adresindeki bu SSS'ye bakın ). 1131376238 "Conn" ascii karakterlerinin ondalık kodlamasıdır, bu nedenle büyük olasılıkla "Bağlanıyor ..." "Bağlandı ..." veya belki "Bağlantı kurulamadı" gibi bir mesajdır. Sftp yerine ssh ile deneyin, mesajın görünür şekilde yazdırılıp yazdırılmadığına bakın ve belki nereden geldiğini anlayabilirsiniz.
Gordon Davisson

ssh iyi çalıştı. Ayrıca sık sık bu soru ile karşı karşıya olduğumu belirtmeliyim: 'xxxxx (<proxy komutu için hostip>)' ana bilgisayarının özgünlüğü kurulamıyor. RSA anahtar parmak izi 37: 40: d4: c7: vb. Bağlanmaya devam etmek istediğinizden emin misiniz (evet / hayır)? evet
user74094

Gordon, çok faydalı! Bunu fu oneliners komut satırı metin dosyasına ekliyorum. Bir ton teşekkürler!
Travis Leleu

execgerekli? (Bu bölüm olmadan burada iyi çalışır.)
13'te eşit

3

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!


0

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.


0

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 \ ""


Beğendim, denedim. A için şifreyi aldı, sonra şu mesajı verdi: Ana bilgisayar anahtarı doğrulaması başarısız oldu.
user74094
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.