Apakah mungkin untuk SCP dari remote ke lokal sementara login ke remote dan tanpa mengetahui alamat IP lokal?


31

Saya secara teratur menemukan diri saya ingin menyalin file dari sesi terminal jarak jauh ke mesin lokal saya. Biasanya saya keluar dari sesi jarak jauh dan memanggil transfer scp dari lokal untuk menyalin file dari jarak jauh ke lokal. Tapi ini terasa agak panjang lebar. Saya ingin mentransfer file sementara login ke remote melalui SSH untuk menghemat waktu. Mesin lokal saya terhubung ke internet dari rentang IP dinamis jadi saya tidak pernah yakin bagaimana cara menghubungkannya dari jarak jauh. Tapi yang pasti, karena sesi remote berasal dari laptop saya, harus ada jalan pintas di scp untuk kembali ke laptop saya ... Benar?

Jawaban:


20

Anda dapat menggunakan tunneling SSH untuk ini.

Dengan menggunakan tunneling, Anda dapat meneruskan port TCP baik dari mesin lokal Anda ke mesin jarak jauh, atau dari mesin jarak jauh ke mesin lokal Anda. Saya sering menggunakannya untuk meneruskan misalnya port SMTP atau IMAP dari mesin jarak jauh di belakang firewall ke mesin lokal saya (dan kemudian mengakses layanan secara lokal, seolah-olah mereka berjalan secara lokal).

Untuk meneruskan port 22 (SSH) dari mesin lokal Anda ke mesin jarak jauh coba ini:

ssh -R12345:localhost:22 yourremoteuser@remotemachine

(Perhatikan bahwa localhost merujuk pada nama lokal dari mesin jarak jauh)

Setelah menjalankan ini, Anda seharusnya dapat ssh kembali ke rumah menggunakan:

ssh -p12345 yourlocaluser@127.0.0.1

Saat menggunakan scp, Anda akan melakukan sesuatu seperti (scp memiliki P huruf besar untuk penerusan port):

scp -P12345 filename 127.0.0.1:/tmp/filename

Port forwarding ke arah lain (dari jarak jauh ke lokal) menggunakan -L bukan -R.

Perintah di atas berasumsi bahwa Anda menggunakan klien ssh terminal. Klien grafis, seperti Putty untuk Windows, juga mendukung tunneling


Tidak menjawab pertanyaan OP yang IP-nya tidak statis.

2
Kecuali saya melewatkan sesuatu ini seharusnya baik bagi OP untuk terhubung dari mesin yang saat ini jauh ke lokal. Tunneling akan dilakukan melalui sesi SSH. Karena koneksi SSH diatur dari mesin lokal dinamis ke jarak jauh, sambungan itu akan berhasil dan dengan demikian akan dapat mengatur port mendengarkan pada mesin jarak jauh yang terowongan kembali ke tempat asalnya.

Ini akan membutuhkan OP untuk mengatur server SSH pada mesin lokalnya dan mengurus otentikasi. Jadi ini mungkin lebih banyak masalah daripada nilainya dalam beberapa kasus penggunaan.
Septagram

Tidak hanya ini berfungsi untuk IP dinamis, ia juga berfungsi di firewall yang melarang koneksi ssh dari jarak jauh ke lokal. Jawaban yang sangat berguna!

3
Anda dapat membuatnya lebih nyaman dengan mengatur penerusan port jarak jauh dengan ~Cpelarian. Cukup ketik <Enter>~C-R 12345:localhost:22<Enter>, dan Anda memiliki terowongan Anda tanpa meninggalkan sesi SSH yang sudah ada.

6

Coba yang berikut ini di baris perintah dari mesin jarak jauh, Anda mungkin perlu mengaktifkan penerusan port pada router Anda.

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

Sumber: Dengan mudah scp file kembali ke host yang Anda hubungkan (commandlinefu.com)


1
Untuk menjelaskan apa yang dilakukan oleh orang-orang ini, ${SSH_CLIENT%% *}tampilkan IP mesin lokal Anda. Jadi seluruh perintah membuka sesi scp dari mesin jarak jauh ke mesin lokal Anda untuk mentransfer file. Ini hanya dapat dilakukan jika Anda dapat SSH ke mesin lokal Anda dari mesin jarak jauh.
bizi

2
Ini dapat ditingkatkan lebih lanjut dengan menambahkan sesuatu seperti export ME="${SSH_CLIENT%% *}"ke dalam file shell rc Anda. Anda kemudian dapat menggunakanscp <file> $ME:<local path>
kralyk

Hebat, ini berfungsi, namun perhatikan: Jika Anda masuk melalui VPN file tidak akan berakhir di mesin Anda, tetapi di tempat lain.
kap

1

Mungkin zssh ?

zssh (Zmodem SSH) adalah program untuk mentransfer file secara interaktif ke mesin jarak jauh saat menggunakan shell aman (ssh). Ini dimaksudkan sebagai alternatif yang nyaman untuk scp, memungkinkan untuk mentransfer file tanpa harus membuka sesi lain dan mengautentikasi ulang diri sendiri.

zssh adalah pembungkus interaktif untuk ssh

Ini menggunakan rz, sz implementasi transfer file zmodem terhormat.


1

Terpilih pertanyaan ini, ini adalah sesuatu yang ingin saya capai dengan mudah juga.

Berikut ini jawaban terkait: Bagaimana cara saya SCP dari mesin jarak jauh ke mesin lokal ketika saya berada di luar jaringan rumah saya?

Anda perlu mengizinkan akses ke ssh dari luar jaringan Anda. Ini dilakukan dengan meneruskan port pada router broadband Anda ke server Anda. Namun ada beberapa masalah keamanan dengan membolehkan akses ssh dari luar, jadi Anda mungkin juga ingin melihat metode untuk mengamankan ssh, otentikasi berbasis kunci khusus dan sepenuhnya menonaktifkan otentikasi kata sandi.


0

Salah satu solusinya adalah menangguhkan sesi ssh pada mesin lokal, melakukan salinan pada mesin lokal dan kemudian melanjutkan sesi ssh Anda di mana Anda tinggalkan.

Sebagai contoh, misalkan saya terhubung ke myuser @ remote , dan saya ingin menyalin file lol.txt ke komputer lokal saya. Pertama saya ingin menangguhkan ssh pada mesin lokal saya. Biasanya Anda akan menggunakan Ctrl- Zuntuk menangguhkan, tetapi ini tidak akan berhasil di ssh karena akan dikirim ke shell jarak jauh. Sebagai gantinya, Anda harus menggunakan urutan ssh escape Enter~. Jadi untuk menunda ssh tekan Enter~ Ctrl- Z. Sekarang Anda dapat menjalankan perintah pada mesin lokal Anda, dan dapat melakukannya

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

untuk menyalin file dan kemudian kembali ke ssh di mana Anda meninggalkannya

user@localmachine:~$ fg


tetapi masalahnya bukan menyalin dari jarak jauh, masalahnya menyalin ke jarak jauh, saya tidak melihat bagaimana menangguhkan shell melakukan apa pun untuk mengatasi itu ...
alex

Yah itu bekerja sebaliknya juga. Idenya hanyalah Anda menunda sesi alih-alih keluar, yang membuatnya setidaknya sedikit lebih mudah.
Steen Schütt

0

Jika Anda menginginkan solusi yang lebih sederhana, cukup buka akun dropbox, buka mesin jarak jauh dan lakukan wget (versi modifikasi dari sini ): wget --no-check-certificate https://www.dropbox.com/s/2123jshf/ABC.pdf?dl=1 -O abc.pdf

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.