Saya ingin mengunduh file dari sesi SSH aktif. Dalam banyak kasus, saya mungkin bisa hanya menggunakan SFTP, scp
, rsync
et al tetapi ada saat di mana saya telah ditinggikan hak akses pada remote server dengan cara saya tidak dapat menggunakan metode ini.
Jika Anda kesulitan memahami apa yang saya maksud, bayangkan Anda ingin mengunduh sesuatu dari /root/
atau /var/log/auth.log
. Login root dinonaktifkan (karena kami bukan idiot). Bagaimana Anda mendapatkan file itu? Salin di suatu tempat yang kurang terlindungi lalu pindahkan? Ini kikuk. Ada juga skenario di mana path jarak jauh kompleks atau sementara, atau bahkan bukan jalan karena saya ingin output dari perintah jarak jauh disimpan secara lokal. Simpan dari jarak jauh, lalu salin? Bunyi!
Ada beberapa cara lebih kikuk untuk mencapai versi ini tetapi di dunia yang ideal, saya akan memiliki sesuatu yang mirip dengan akses tulis lokal dari server jauh, menggunakan sesi SSH yang ada sebagai saluran. Sesuatu seperti (ini hanya kesan seorang artis):
$oli@remote: cp /root/cheesecake /local/
Dan itu hanya muncul di lokal saya cwd
. Dan akses dua arah tidak akan menjadi hal yang buruk.
Sudah delapan tahun sejak saya mengajukan pertanyaan ini dan kami telah melihat sejumlah suara nyata, tetapi masih menjadi masalah yang kadang-kadang masih saya perjuangkan.
Saya telah refactored pertanyaan menjadi sesuatu yang jauh lebih idealis. Saya sepenuhnya memahami bahwa saat ini mungkin tidak ada jawaban yang sempurna. Semua upaya masa lalu dan masa depan menuju cita-cita saya dihargai.
zssh
mungkin paling dekat dengan alur kerja mirip-zmodem yang mungkin Anda ingat.Jawaban:
Anda mungkin ingin memeriksa zssh , yang tersedia di jagat raya, dan karenanya tersedia bersama
sudo apt-get install zssh
Anda memerlukannya di server ubuntu dan klien Anda, tetapi pada dasarnya ketika login dengan zssh, Anda cukup menekan 'ctrl- @' dan menampilkan "mode transfer file" yang memungkinkan Anda mengirim file kembali ke pipa ke mesin klien, atau unggah dari klien ke server.
Namun, Anda tidak perlu mengaut ulang atau membuka jendela baru untuk scp.
Jika Anda menggunakan kunci ssh, dan agen ssh, Anda dapat dengan mudah melakukannya:
Yang akan menjadi latar belakang ssh, dan kemudian hanya
scp $!:/whatever/whatever .'
Setelah file ditransfer,
fg
untuk mendapatkan kembali ssh.Jika Anda tidak menggunakan kunci ssh, Anda masih bisa menggunakan opsi "ControlMaster" dan "ControlPath" yang ditambahkan ke versi OpenSSh terbaru, tetapi itu menjadi rumit, periksa man ssh_config
sumber
Dengan asumsi Anda menjalankan server ssh di desktop Anda (ada beberapa cara untuk mengatasi ini, tapi saya pikir mereka semua menambah kompleksitas, dan mungkin memiliki masalah keamanan), Anda dapat mengatur terowongan ssh terbalik. Lihat SSH dengan mudah menyalin file ke sistem lokal. lebih di unix.SE .
~C
Enter-R 22042:localhost:22
Enteruntuk membuat reverse port forwarding dari server Anda ke desktop Anda (22042 dapat berupa nomor port apa pun antara 1024 dan 65534 yang tidak digunakan).scp -P 22042 foo localhost:
akan menyalin filefoo
di direktori Anda saat ini di server ke rumah Anda di desktop.~
Ctrl+ Zmv ~/foo .
Enterfg
Enter.Ssh escape sequence dimulai dengan
~
; tilde hanya dikenali setelah baris baru.~ Ctrl+Z
menempatkan ssh ke latar belakang.~C
memasuki baris perintah di mana Anda dapat membuat atau menghapus penerusan.sumber
Saya datang dengan cara untuk melakukan ini dengan ssh standar. Ini adalah skrip yang menduplikasi koneksi ssh saat ini, menemukan direktori kerja Anda pada mesin jarak jauh dan menyalin kembali file yang Anda tentukan ke mesin lokal. Dibutuhkan 2 skrip yang sangat kecil (1 remote, 1 lokal) dan 2 baris dalam konfigurasi ssh Anda. Langkah-langkahnya adalah sebagai berikut:
Tambahkan 2 baris ini ke
~/.ssh/config
:Sekarang jika Anda memiliki koneksi ssh ke machineX terbuka, Anda tidak perlu kata sandi untuk membuka yang lain.
Buat skrip 1-baris pada mesin jarak jauh yang disebut
~/.grabCat.sh
Buat skrip di mesin lokal bernama ~ / .grab.sh
dan buat alias untuk grab.sh di (
~/.bashrc
atau di mana pun):Itu saja, semua sudah selesai. Sekarang jika Anda masuk
machineX:/some/directory
, cukup jalankan terminal dan ketik baruItu menempatkan file di direktori kerja Anda saat ini di mesin lokal. Anda dapat menentukan lokasi yang berbeda sebagai argumen ketiga untuk "ambil".
Catatan: Jelas kedua skrip harus "dapat dieksekusi", yaitu
chmod u+x filename
.sumber
Jika mesin klien Anda (mesin yang Anda duduki) disebut machineA dan mesin yang saat ini Anda masuki SSH disebut mesin B. MachineA, mesin lokal Anda harus menjalankan SSHD dan membuka port 22. Kemudian:
Salinan
myfile
pada MachineB ke direktori home MachineA saya di machineA. Ini mengasumsikan userid / password sama.Salin
myfile
satu MachineB ke/newdir/newname
pada machineA. Ini mengasumsikan userid / password sama.Mendapat salinan dari
otherfile
direktori MachineA saya di MachineA dan menempatkannya di direktori kerja saya saat ini di mesin MachineB (ditunjuk dalam mode UNIX standar oleh karakter "dot" (.)). Ini mengasumsikan userid / password sama.Jika userid / kata sandi tidak sama maka gunakan:
scp myfile user@MachineA:
untuk mendapatkan file.scp user@MachineA:/path/to/my/otherfile .
untuk meletakkan fileCATATAN tentang SCP:
Sama seperti
cp
perintah,scp
memiliki opsi -p untuk menyebarkan pengaturan izin dari file asli ke salinan (jika tidak, salinan dibuat dengan pengaturan normal untuk file baru), dan opsi -r untuk menyalin seluruh pohon direktori dengan satu perintah.scp
menciptakan saluran data terenkripsi yang benar-benar transparan antara kedua mesin, sehingga data biner (seperti gambar atau program yang dapat dieksekusi) disimpan dengan benar. Ini juga berarti bahwascp
tidak dapat melakukan konversi terminasi end-of-line otomatis antara berbagai jenis sistem operasi, seperti yang dapat dilakukan dengan ftp dalam mode "ascii". Itu tidak akan menjadi masalah ketika menyalin antara sistem Unix, yang semuanya menggunakan konvensi end-of-line yang sama.sumber
jika Anda mengakses server melalui ssh, Anda juga dapat terhubung melalui sftp. Simpan klien filezilla (GUI) dan rekatkan jalur yang saat ini Anda tempati
sumber
Jika file Anda cukup kecil Anda dapat menyandikannya dengan base64 dan kemudian mendekodekannya secara lokal:
Jawaban asli tempat saya mendapatkan ini (dan diuji) dari: https://unix.stackexchange.com/a/2869/194134
sumber
Itu bukan melalui koneksi SSH aktif, tetapi scp menyalin file menggunakan mekanisme dan izin yang sama seperti halnya ssh.
sumber
get file
dan secara ajaib muncul kembali di mesin lokal saya. Jika harus melakukan itu melalui beberapa layanan yang terhubung melalui SSH, maka jadilah .. Tapi harus terikat sesi.sshd
berjalan dan dengan demikian Anda harus dapat menggunakanscp
pada baris perintah server untuk membuang file kembali ke klien. Hanya ada begitu banyak keajaiban untuk berkeliling; terkadang kita masih harus menekan tombol. Solusi FileZilla juga berguna.Ini tidak mungkin dengan sesi ssh default, tetapi Anda dapat menggunakan skrip alih-alih ssh, yang memulai sesuatu seperti ftp sederhana atau server rsh pada sistem lokal Anda dan menjalankan ssh dengan opsi yang diperlukan untuk mengatur terowongan kembali ke desktop Anda untuk menghubungkan ke server ini.
sumber
konsole
memiliki kemampuan itu melalui menu "Edit-> ZModem Upload" saat Anda berada di sesi jarak jauh (atau Ctrl-Alt-U).Harap dicatat: paket
lrzsz
harus diinstal terlebih dahulu. Bagi saya sepertinya berfungsi hanya untuk mengunggah file ASCII.sumber
Karena Anda terhubung dari desktop, saya kira Anda dapat membuka terminal kedua.
Inilah yang sering saya lakukan:
realpath myfile
ataureadlink -f myfile
(rilis Ubuntu yang lebih lama tidak menginstalrealpath
) dan menyalinnya.scp
atausftp
untuk mendapatkan file, menempel path lengkap yang saya dapatkan sebelumnya. Sebagai contoh:scp user@host:/etc/some/file ./
Ini cukup mendasar, tetapi juga mudah diingat dan tidak perlu paket tambahan untuk bekerja.
sumber
Anehnya saya tidak melihat adanya komandan Midnight tua yang baik di sini. Menurut saya, itu mungkin manajer file yang paling universal & bermanfaat untuk shell dengan kemampuan-daya, salah satu alat "harus memiliki" untuk case, yang juga memungkinkan Anda untuk terhubung melalui SSH, FTP, SFTP juga, saat panel kedua Anda dapat membuka sistem file (lokal) Anda yang lain dan bekerja dengan file secara bebas.
Yang Anda butuhkan adalah: apt-get install mc (from universe)
Setelah itu, jalankan mc, buka menu untuk panel kiri atau kanan, pilih koneksi shell, masukkan nama pengguna @ remote-ip, kata sandi - sebenarnya, itu saja .. salin (di sini: unduh) file / folder dari satu mesin ke komputer lain dengan F5, pindah dengan F6, dan seterusnya sesuai dengan tombol di bawah ini. Untuk pengguna MS lama: seperti di NC untuk DOS
sumber
CARA overthinking ini, teman-teman. Saya juga mencari semua jawaban yang dalam, gelap, dan rumit. Ternyata, Anda dapat melakukan ini langsung dari Dolphin langsung dari kaleng. ikan: // username @ server: port
sumber