Uzaktan kumandada oturum açarken ve yerel IP adresini bilmeden SCP'yi uzaktan kumandadan lokalize etmek mümkün mü?


31

Uzak terminal oturumundan yerel makineme dosya kopyalamak istediğim için kendimi düzenli olarak buluyorum. Genellikle uzak oturumdan çıkarım ve dosyayı uzaktaki bir yere kopyalamak için yerelden bir scp aktarımını çağırırım. Ancak bu biraz uzun soluksuz hissediyor. Zaman kazanmak için dosyayı SSH üzerinden uzaktan kumandaya giriş yaparken aktarmak istiyorum. Yerel makinem internete dinamik bir IP aralığından bağlı olduğundan uzaktan nasıl bağlanacağımdan hiçbir zaman emin değilim. Ama elbette, uzaktaki oturum dizüstü bilgisayarımdan kaynaklandığı için dizüstü bilgisayarıma geri dönmek için scp'de bir kısayol olmalı ... Doğru mu?

Yanıtlar:


20

Bunun için SSH tünelini kullanabilirsiniz .

Tünellemeyi kullanarak, bir TCP bağlantı noktasını yerel makinenizden uzak makineye veya uzak makineden yerel makinenize iletebilirsiniz. Örneğin, SMTP veya IMAP bağlantı noktalarını güvenlik duvarının arkasındaki uzak bir makineden yerel makineme iletmek için sık sık kullanıyorum (ve daha sonra yerel olarak çalışıyorlarmış gibi hizmetlere yerel olarak erişiyorum).

22 numaralı bağlantı noktasını (SSH) yerel makinenizden uzaktaki makineye iletmek için şunu deneyin:

ssh -R12345:localhost:22 yourremoteuser@remotemachine

(Localhost'un uzak makinenin yerel adını ifade ettiğini unutmayın)

Bunu çalıştırdıktan sonra, aşağıdakileri kullanarak evinizi geri döndürebilirsiniz:

ssh -p12345 yourlocaluser@127.0.0.1

Scp kullanırken, aşağıdaki gibi bir şey yapardınız (scp'de port iletimi için büyük harf P vardır):

scp -P12345 filename 127.0.0.1:/tmp/filename

Diğer yöne doğru bağlantı noktası iletme (uzaktan lokalize) -R yerine -L kullanır.

Yukarıdaki komutlar bir terminal ssh istemcisi kullandığınızı varsayar. PuTTY for Windows gibi grafik istemciler de tünellemeyi destekliyor


IP'sinin statik olmadığı OP sorusunu cevaplamıyor.

2
Bir şeyi kaçırmadığım sürece, OP'nin şu anda uzaktaki makineden bölgeye geri dönmesi için iyi olması gerekir. Tünel SSH oturumu ile yapılacaktır. SSH bağlantısı dinamik yerel makineden uzaktan kumandaya ayarlandığı için başarılı olacak ve böylece uzak makinede geldiği yere tünel yapan bir dinleme portu kurabilecek.

Bunun için OP'nin yerel makinede SSH sunucusunu kurması ve kimlik doğrulaması yapması gerekir. Bu nedenle, bazı kullanım durumlarında değerinden daha fazla sorun olabilir.
Septagram

Yalnızca dinamik IP'ler için değil, ssh bağlantılarını uzaktan yerelden yasaklayan güvenlik duvarlarında da çalışır. Çok faydalı cevap!

3
Uzak bağlantı noktasını ~Ckaçış ile birlikte ayarlayarak daha da kolaylaştırabilirsiniz . Sadece yazın <Enter>~C-R 12345:localhost:22<Enter>ve önceden kurulmuş SSH oturumunuzu terk etmeden tünelinize sahip olun.

6

Uzak makineden gelen komut satırında aşağıdakileri deneyin, yönlendiricinizde bağlantı noktası iletmeyi etkinleştirmeniz gerekebilir.

scp <file on remote machine> ${SSH_CLIENT%% *}:<directory on local machine>

Source: Bir dosyayı kolayca bağlandığınız ana bilgisayara kolayca tarayın (commandlinefu.com)


1
Bunun insanlar için ne yaptığını açıklamak ${SSH_CLIENT%% *}için yerel makinenizin IP adresini kullanın. Böylece tüm komut dosya aktarımı için uzak makineden yerel makinenize bir scp oturumu açar. Bu, yalnızca uzak makineden yerel makinenize SSH yapabiliyorsanız yapılabilir.
bizi

2
Bu, export ME="${SSH_CLIENT%% *}"kabuk rc dosyanıza benzer bir şey eklenerek daha da geliştirilebilir . Daha sonra basitçe kullanabilirsinizscp <file> $ME:<local path>
kralyk

Harika, bu işe yarıyor, ancak not: VPN ile giriş yaparsanız dosyalar makinenize değil, başka bir yere gönderilir.
kap 11:32 de

1

Belki zssh ?

zssh (Zmodem SSH), güvenli kabuğu (ssh) kullanırken dosyaları etkileşimli olarak uzak bir makineye aktarmak için kullanılan bir programdır. Scp'ye uygun bir alternatif olması, başka bir oturum açmadan ve kendi kimliğini tekrar doğrulamak zorunda kalmadan dosya aktarımı yapması için tasarlanmıştır.

zssh, ssh için etkileşimli bir sarıcıdır

Zmodem dosya transferinin saygıdeğer rz, sz uygulamalarını kullanır.


1

Bu soruyu kızdırdı, bu da kolayca yapmak istediğim bir şey .

İşte ilgili cevap: Ev ağımın dışındayken uzak makineden yerel makineye nasıl SCP yapabilirim?

Ssh'ye ağınızın dışından erişime izin vermeniz gerekir. Bu, geniş bant yönlendiricinizdeki bir bağlantı noktasını sunucunuzun ağına ileterek yapılır. Bununla birlikte, ssh'nin dışarıdan erişmesine izin vermenin bazı güvenlik kaygıları vardır, bu nedenle ssh, özellikle anahtar tabanlı kimlik doğrulamasını güvence altına almak ve parola doğrulamasını tamamen devre dışı bırakmak için yöntemlere bakmak isteyebilirsiniz.


0

Çözümlerden biri, ssh oturumunu yerel makinede askıya almak, yerel makinede kopyayı çıkarmak ve ardından bıraktığınız ssh oturumunuza devam etmek olacaktır.

Örneğin, benim kullanıcı @ uzaktan kumandasına bağlı olduğumu ve lol.txt dosyasını yerel bilgisayarıma kopyalamak istediğimi varsayalım . İlk önce yerel makinemdeki ssh'yi askıya almak istiyorum. Normalde Ctrl- Zaskıya almak için kullanırsınız, ancak bu, ssh ile çalışmaz çünkü uzak kabuğa gönderilir. Bunun yerine, ssh escape dizisini kullanmanız gerekir Enter~. Yani ssh basın askıya almak Enter~ Ctrl- Z. Şimdi yerel makinenizde komutları çalıştırabilir ve

user@localmachine:~$ scp user@remote:/path-to-file/lol.txt /dest-path/lol.txt

dosyayı kopyalamak ve sonra bıraktığınız yere tam olarak ssh'ye dönmek için

user@localmachine:~$ fg


ama sorun uzaktan kumandadan kopyalanmıyor, sorun uzaktan kumandaya kopyalanıyor, askıya alma kabuğunun bu sorunu gidermek için ne yaptığını görmüyorum ...
alex

Peki diğer tarafta da çalışıyor. Fikir, oturumu kapatmak yerine askıya almaktır, bu da en azından biraz daha kolay hale getirir.
Steen Schütt

0

Daha basit bir çözüm istiyorsanız, yalnızca dropbox hesabını açın, uzaktaki makineye gidin ve wget yapın ( buradan değiştirilmiş sürüm ): wget --no-check-certificate https://www.dropbox.com/s/2123jshf/ABC.pdf?dl=1 -O abc.pdf

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.