GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara scp kembali ke lokal ketika saya sudah melakukan sshed ke mesin jarak jauh?

Mengingat Anda memiliki sshd berjalan di mesin lokal Anda, itu mungkin dan Anda tidak perlu mengetahui alamat IP keluar Anda. Jika penerusan port SSH diaktifkan, Anda dapat membuka terowongan aman bahkan saat Anda sudah membuka koneksi ssh, dan tanpa menghentikannya.

Asumsikan Anda memiliki koneksi ssh ke beberapa server:

local $ ssh [email protected]
Password:
remote $ echo abc > abc.txt  # now we have a file here

Oke sekarang kita perlu menyalin file itu kembali ke server lokal kita, dan untuk beberapa alasan kita tidak ingin membuka koneksi baru. Oke, mari dapatkan baris perintah ssh dengan menekan Enter ~C (Masukkan, lalu tilde, lalu kapital C):

ssh> help
Commands:
      -L[bind_address:]port:host:hostport    Request local forward
      -R[bind_address:]port:host:hostport    Request remote forward
      -D[bind_address:]port                  Request dynamic forward
      -KR[bind_address:]port                 Cancel remote forward

Itu seperti -L/R/D biasa pilihan. Kami membutuhkan -R , jadi kita menekan Enter ~C lagi dan ketik:

ssh> -R 127.0.0.1:2222:127.0.0.1:22
Forwarding port.

Di sini kami meneruskan port server jarak jauh 2222 ke port 22 mesin lokal (dan di sinilah Anda memerlukan server SSH lokal untuk dimulai pada port 22; jika mendengarkan di beberapa port lain, gunakan itu alih-alih 22).

Sekarang jalankan saja scp pada server jarak jauh dan salin file kami ke port server jarak jauh 2222 yang dipetakan ke port 22 mesin lokal kami (di mana sshd lokal kami sedang berjalan).

remote $ scp -P2222 abc.txt [email protected]:
[email protected]'s password:
abc.txt                   100%    4     0.0KB/s   00:00

Kita selesai!

remote $ exit
logout
Connection to example.com closed.
local $ cat abc.txt
abc

Rumit, tapi jika Anda benar-benar tidak bisa jalankan saja scp dari terminal lain, bisa membantu.


Saya menemukan solusi satu baris di SU ini jauh lebih mudah daripada jawaban yang diterima. Karena menggunakan variabel lingkungan untuk alamat IP lokal, menurut saya ini juga memenuhi permintaan OP untuk tidak mengetahuinya sebelumnya.

berdasarkan itu, inilah fungsi bash untuk "Mengunduh" file (yaitu mendorong dari sesi SSH ke lokasi yang ditetapkan di mesin lokal)

function dl(){
    scp "$1" ${CLIENT_IP%% *}:/home/<USER>/Downloads
}

Sekarang saya cukup memanggil dl somefile.txt sementara SSH masuk ke remote dan somefile.txt muncul di folder Unduhan lokal saya.

tambahan:

  • Saya menggunakan kunci rsa (ssh-copy-id) untuk menyiasati permintaan kata sandi
  • Saya menemukan trik ini untuk mencegah bashrc lokal bersumber dari panggilan scp

Catatan:ini memerlukan akses SSH ke mesin lokal dari jarak jauh (apakah ini sering terjadi pada siapa saja?)


Linux
  1. Bagaimana saya bisa menyalin output dari perintah jarak jauh ke clipboard lokal?

  2. Bagaimana cara terhubung ke mesin virtual hyper-v lokal melalui SSH?

  3. Bagaimana cara scp melalui mesin perantara?

  1. Ssh – Salin File Kembali Ke Sistem Lokal Dengan Ssh?

  2. Bagaimana Cara Menyalin File Dari Server Jarak Jauh Ke Mesin Lokal?

  3. Cara mengambil banyak file dari mesin jarak jauh ke lokal dengan Ansible

  1. Bagaimana Cara Meneruskan Kunci Ssh yang Sudah Diteruskan Ke Tmux?

  2. Bagaimana Cara Scp Melalui Mesin Menengah??

  3. Cara mengirim data ke clipboard lokal dari sesi SSH jarak jauh