Jika saya masuk ke sistem melalui SSH, apakah ada cara untuk menyalin file kembali ke sistem lokal saya tanpa menyalakan terminal atau sesi layar lain dan melakukan scp atau sesuatu yang serupa atau tanpa melakukan SSH dari sistem jarak jauh kembali ke sistem lokal?
257
scp file.foo [email protected]:file.foo
: PJawaban:
Koneksi master
Ini paling mudah jika Anda berencana terlebih dahulu.
Buka koneksi master pertama kali. Untuk koneksi selanjutnya, rutekan koneksi slave melalui koneksi master yang ada. Di Anda
~/.ssh/config
, atur berbagi koneksi agar terjadi secara otomatis:Jika Anda memulai sesi ssh ke yang sama (pengguna, port, mesin) sebagai koneksi yang ada, sesi kedua akan diteruskan ke yang pertama. Membuat koneksi kedua tidak memerlukan otentikasi baru dan sangat cepat.
Jadi saat Anda memiliki koneksi aktif, Anda dapat dengan cepat:
scp
ataursync
;Penerusan
Pada koneksi yang ada, Anda dapat membuat terowongan ssh terbalik. Pada baris perintah ssh, buat penerusan jarak jauh dengan melewati di
-R 22042:localhost:22
mana 22042 adalah nomor yang dipilih secara acak yang berbeda dari nomor port lainnya pada mesin jarak jauh. Kemudianssh -p 22042 localhost
pada mesin jarak jauh menghubungkan Anda kembali ke mesin sumber; Anda dapat menggunakannyascp -P 22042 foo localhost:
untuk menyalin file.Anda dapat mengotomatiskan ini lebih lanjut dengan
RemoteForward 22042 localhost:22
. Masalah dengan ini adalah bahwa jika Anda terhubung ke komputer yang sama dengan beberapa contoh ssh, atau jika orang lain menggunakan porta, Anda tidak mendapatkan penerusan.Jika Anda belum mengaktifkan penerusan jarak jauh dari awal, Anda dapat melakukannya pada sesi ssh yang ada. Jenis Enter
~C
Enter-R 22042:localhost:22
Enter. Lihat “Karakter melarikan diri” di manual untuk informasi lebih lanjut.Ada juga beberapa informasi menarik di utas Server Fault ini .
Salin-tempel
Jika file tersebut kecil, Anda dapat mengetiknya dan menyalin-menempel dari output terminal. Jika file berisi karakter yang tidak dapat dicetak, gunakan penyandian seperti base64 .
Lebih mudah, jika Anda memiliki penerusan X aktif, salin file pada mesin jarak jauh dan tempel secara lokal. Anda dapat mengirim atau memasukkan data melalui
xclip
atauxsel
. Jika Anda ingin mempertahankan nama file dan metadata, salin dan tempel arsip.sumber
Cara mudah lainnya (IMO) adalah:
Atau jika Anda lebih suka sesuatu yang mirip GUI, coba Midnight Commander . Mereka menyebut fitur Shell-Link . Kebanyakan distro memiliki em dalam sistem paket mereka sebagai
mc
.sumber
mc
adalah cara tercepat untuk digunakan.tgz
file sepanjang waktu :)SSH mendukung beberapa perintah, melalui karakter escape (
~
secara default):The
!args
tampaknya paling dekat dengan apa yang Anda inginkan. Perhatikan bahwa Anda harusPermitLocalCommand
mengaktifkan/etc/ssh_config
file Anda agar~C
perintah dapat berfungsi (lihatman ssh_config
).Anda dapat kembali menggunakan sesi ssh yang sama jika Anda menyiapkan
ControlMaster
dissh_config
. Jika kamu melakukan ini:Anda secara teknis tidak pernah meninggalkan sesi ssh, dan tidak perlu mengautentikasi ulang. Mungkin lebih rumit dari yang Anda inginkan, tetapi saya tidak bisa memikirkan cara lain yang mudah.
sumber
!args
di pesan bantuan.args
tidak dalam pertama bantuan pesan (~?
), tetapi dalam kedua (setelah satu memasukissh>
cepat dengan~C
, satu dapat mengetikhelp
dissh>
prompt)Itu semua adalah metode yang sangat rumit.
Anda dapat memasang sistem file jarak jauh pada mesin lokal Anda dengan
sshfs
:Kemudian Anda dapat menyalin tempel file dengan nautilus, gnome, konqueror, lumba-lumba, bash atau apa pun.
sumber
sshfs -oIdentityFile=~/.ssh/keyfile.pem [email protected]:/ /mnt/sshfs/
-R
, untuk remote-ke-lokal) atau meneruskan (-L
, untuk lokal-ke-jauh) port untuk menjalankan transfer file, dengan asumsi Anda memiliki beberapa daemon mentransfer file mendengarkan di ujung lainnya.Tapi tidak ada yang benar-benar dibutuhkan, IMO. Protokol SSH mendukung banyak saluran pada satu koneksi, dan klien OpenSSH mendukung multiplexing. Dengan anggapan Anda memiliki
ControlMaster
danControlPath
mengatur (ControlPersist
berguna juga),sumber
Pendekatan yang lebih sederhana: Buka Filezilla (atau browser ftp favorit Anda), buka koneksi ssh ke situs yang sama, cari file dan seret ke struktur file lokal Anda. Jika Anda baru mengenal Filezilla, gunakan fitur "pengelola situs" untuk menyambung kembali dengan cepat di lain waktu.
Ya, saya tahu ini jelas bagi sebagian besar dari Anda (dan tidak tepat pada titik), tetapi beberapa (seperti saya) yang menemukan utas ini mencari solusi terminal saja mungkin telah mengabaikan yang jelas.
sumber
ssh://SERVER
.Apa yang saya temukan sebagai solusi terbaik dan paling efisien adalah menggunakan
xclip-copyfile
danxclip-pastefile
.Di server, Anda gunakan
xclip-copyfile
untuk menyalin satu atau lebih file. File-file ini kemudian tersedia di server lokal Anda. Di sana, Anda bisa menggunakannyaxclip-pastefile
.Ini memotong kebutuhan untuk menggunakan
scp
atau memiliki server ssh lokal. Saya menggunakan ini dengan cygwin misalnya. Satu-satunya masalah adalah ini membutuhkan instalasixclip
jika Anda belum memilikinya. Oh, dan ini berfungsi dengan file biner juga.sumber
Salah satu dari banyak alasan kami menggunakan SecureCRT - meskipun lebih memilih perangkat lunak open source yang praktis - adalah kemudahan melakukan transfer file. Tidak ada penggantian langsung di dunia F / OSS.
SecureCRT dimulai sebagai program Windows murni pada pertengahan 1990-an tetapi porting ke Mac OS X dan Linux beberapa tahun yang lalu .
SecureCRT memiliki tiga fitur utama untuk mentransfer file ke dan dari sistem tempat Anda menggunakan SSH:
ZModem , YModem , XModem , Kermit dan ASCII - SecureCRT adalah semacam emulator terminal jadul, mendukung beberapa protokol transfer file in-band.
Cara termudah untuk digunakan adalah ZModem. Ketika Anda mengetikkan sesuatu seperti
sz file-to-download
pada baris perintah jarak jauh,sz
program jarak jauh menulis urutan keluar yang memberitahu SecureCRT untuk segera mulai mengunduhfile-to-download
ke direktori unduhan default.Sentuhan yang bagus adalah direktori unduhan dapat disesuaikan per sesi. Kami menggunakan ini untuk memiliki direktori per-situs di server file kantor utama kami, jadi kami tidak perlu mengurutkan file yang diunduh secara manual.
(
sz
adalah program "kirim ZModem", bagian darilrzsz
paket. Ini sudah dipaket untuk sebagian besar sistem Unixy. Jika karena alasan tertentu sistem jarak jauh Anda belum menginstalnya, dan Anda tidak dapat dengan mudah menginstal paket biner, paket source berukuran kecil dan sangat portabel. Lebih dari sekali, saya harus mengirimlrzsz
tarbal "sharchive" atauuuencode
'd ke sistem jarak jauh yang dilucuti agar saya dapat mengirim file ZModem ke sana.)SFTP - SecureCRT memiliki implementasi SFTP dasar yang terintegrasi erat.
Dengan "terintegrasi penuh," Maksud saya ketika Anda memberikan perintah menu SFTP atau pintasan keyboard, itu membuka tab baru yang terhubung ke situs jarak jauh melalui koneksi SSH yang sama. Dengan demikian, Anda tidak perlu masuk kembali, dan koneksi dibuat sedikit lebih cepat daripada jika Anda telah membuka koneksi SFTP terpisah ke server yang sama.
Saya mencirikan fitur SFTP sebagai "dasar," karena Perangkat Lunak VanDyke memiliki produk transfer file terpisah, SecureFX . Ini lebih berfitur daripada klien SFTP bawaan, dan juga terintegrasi dengan SecureCRT.
Fitur SFTP SecureCRT memungkinkan Anda mengonfigurasi direktori jarak jauh dan lokal default yang terpisah dari konfigurasi ZModem.
Fitur SFTP ini memiliki semacam antarmuka baris perintah dasar, meniru
sftp
program OpenSSH , kecuali bahwa ia memiliki biaya seperti Tabpenyelesaian perintah. Dengan demikian, mengambil file jarak jauh yang disebutsomefile.tar.gz
mungkin semudahget so
TabEnter.Drag-and-drop - Jika Anda drag-and-drop file ke jendela terminal, secara otomatis ketik
rz
untuk Anda dan mulai mengirim file.Sebagai alternatif, Anda dapat membuka tab SFTP dan menjatuhkan file ke tab itu untuk mengirimkannya melalui SFTP. Jadi, mengirim file ke sistem jarak jauh bisa sesederhana Alt-P, seret , jatuhkan .
Kami menemukan bahwa transfer terjadi jauh lebih cepat melalui SFTP, mungkin karena ini adalah protokol berbasis TCP, jadi itu manfaat dari jendela geser besar tumpukan TCP / IP modern . ZModem dirancang pada hari-hari ketika ukuran blok 64 kiB dianggap "besar." Dengan demikian, banyak potensi kecepatan dalam suatu tautan direndam dalam ZModem sementara masing-masing ujung menunggu pengakuan transfer blok.
Satu hal yang menyenangkan tentang mode operasi seret-dan-jatuhkan adalah diperlukan salah satu tekanan dari penggunaan ZModem. Saat Anda mengetik
rz
di sistem jarak jauh, SecureCRT memunculkan pemilih file secara otomatis. Anda kemudian memiliki waktu sekitar satu menit untuk menemukan dan memilih file sebelum sisi jarak jauh habis. Ini menciptakan getaran balapan melawan waktu yang tidak menyenangkan. Seret-dan-jatuhkan memungkinkan Anda menemukan file sesuka Anda, lalu mulai transfer dengan satu gerakan cepat mouse.Kami masih menggunakan metode manual, memulai transfer dengan
rz
perintah eksplisit . Ini karena SecureCRT memungkinkan Anda mengonfigurasi direktori unggahan per sesi, yang kami arahkan ke folder di server file yang selalu berisi versi terbaru perangkat lunak yang dijalankan oleh situs jarak jauh tertentu. Untuk transfer semacam itu, tidak ada perlombaan melawan waktu, karena pemilih file terbuka di tempat yang tepat untuk memulai.sumber
Gunakan "!" untuk mengonversi file ke ASCII-representasi file Anda (misalnya
! uuencode myfile.bin >uuencode.dat
). Kemudian gunakan! cat uuencode.dat >target.dat
. Setelah itu gunakan uudecode di sisi target:! uudecode target.dat >myfile.bin
sumber