Saya ingin mengunduh file dari komputer kantor saya ke laptop saya.
Saya dapat menghubungkan mesin kantor saya dengan SSH ke server organisasi dan kemudian SSH dari server ke mesin kantor saya.
Satu-satunya perintah yang diterima server organisasi adalah ssh, ssh1, dan ssh2.
Bagaimana saya bisa mengunduh file dari mesin kantor (jarak jauh) saya melalui server ke mesin laptop (lokal) saya?
Jawaban:
Jawaban sebelumnya menyebutkan bagaimana menggunakan direktif ProxyJump (ditambahkan dalam OpenSSH 7.3) untuk terhubung melalui server perantara (biasanya disebut sebagai bastion host), tetapi menyebutkannya hanya sebagai argumen baris perintah.
Kecuali jika itu adalah mesin yang tidak akan Anda sambungkan di masa depan, hal terbaik adalah Anda mengonfigurasikannya
~/.ssh/config
.Saya akan meletakkan file seperti:
Jika Anda menggunakan versi OpenSSH sebelumnya yang tidak mendukung ProxyJump, Anda akan menggantinya dengan yang setara:
dan jika versi ssh lokal Anda benar-benar kuno yang tidak mendukung
-W
:meskipun yang terakhir ini mensyaratkan bahwa mesin benteng telah
nc
diinstal.Keindahan ssh adalah Anda dapat mengkonfigurasi setiap tujuan pada file, dan mereka akan menumpuk dengan sangat baik. Dengan demikian Anda akhirnya bekerja dengan
office-machine
sebagai hostname pada semua alat (ssh, scp, sftp ...) karena mereka terhubung langsung, dan mereka akan mencari cara untuk menghubungkan berdasarkan ssh_config. Anda juga dapat memiliki wildcard inginHost *.internal.company.local
membuat semua host berakhir seperti itu melalui benteng tertentu, dan itu akan berlaku untuk semuanya. Setelah dikonfigurasi dengan benar, satu-satunya perbedaan antara melakukan satu koneksi hop atau dua puluh akan menjadi waktu koneksi yang lebih lambat.sumber
Jika Anda memiliki OpenSSH (8.0) baru-baru ini, Anda dapat menggunakan
-J
sakelar (lompatan) :Dengan versi yang lebih lama (tapi setidaknya 7,3), Anda dapat menggunakan
ProxyJump
arahan , baik di baris perintah:atau dalam
ssh_config
file, seperti yang ditunjukkan oleh jawaban oleh @ Ángel.Ada opsi lain seperti
ProxyCommand
atau penerusan porta, yang dapat Anda gunakan pada versi OpenSSH yang lebih lama. Ini tercakup dalam Apakah OpenSSH mendukung login multihop?sumber
ssh -J userA@orgserv userB@officecomp cat remote/path > local/path
scp
tidak mendukung-J
, itu mungkin masih cukup baru untuk mendukungProxyJump
opsi; coba salah satu jawaban lain yang menggunakan opsi ini secara eksplisit.ssh
pertanyaan yang menyarankan Anda memodifikasiconfig
untuk host tertentu ketika opsi baris perintah sederhana sudah cukup untuk melakukan pekerjaan.-J user@intermediate
setiap kali saya perlu terhubung.Terkadang kita bisa menggunakan pipeline saja. Waktu itu hari ini.
Anda juga dapat mengunggah
Ya ada solusi lain yang melibatkan proksi, dll. Tetapi mengetahui cara melakukan ini berguna.
sumber
cat
!Gunakan
ProxyJump
konfigurasi:sumber
Ada protokol kuno yang disebut ZMODEM : beberapa program mendukungnya akhir-akhir ini, tetapi ketika berfungsi, itu bisa sangat nyaman.
Pertama periksa apakah program terminal laptop Anda mendukung ZMODEM. (Misalnya, Anda dapat mengkonfigurasi iTerm2 (di Mac) untuk mendukung ZMODEM. Contoh skrip tersedia di sini .)
Di mesin kantor Anda, jalankan:
sudo apt install lrzsz
Sekarang yang harus Anda lakukan adalah ssh ke mesin kantor Anda, dan jalankan
sz (filename)
. File akan diunduh melalui terminal Anda.sumber
Konfigurasi di bawah ssh pengguna:
~/.ssh/config
Anda dapat menyalin sekarang dari server intranet langsung ke 3 server lompat.
scp [email protected]:/home/user/ ./*
Saya lebih suka ini karena tidak perlu lagi menentukan server melompat dengan scp
sumber
Melalui SCP -3:
sumber
-3
opsi digambarkan sebagai "Salinan antara dua host remote ditransfer melalui host lokal." sementara saya percaya pertanyaan ini menetapkan bahwa tuan rumah lokal tidak dapat mengakses "remote2".-3
. Tetapi ini mengasumsikan bahwa Anda dapat terhubung dari mesin tengah kembali ke yang pertama.-J
/JumpHost
. Justru sebaliknya karena memiliki batasan yang @Joe sebutkan.