Ini kasus penggunaan saya:
- Saya sering terhubung ke komputer lain melalui SSH untuk bekerja dan saya sering perlu menyalin dan menempelkan dokumen / teks dari server ke editor yang berjalan secara lokal untuk menulis contoh dan berbagi teks.
- Seringkali, jika teksnya cukup kecil, saya cukup menyalin output dari program terminal saya (gnome-terminal saat ini) dan menempelkannya.
- Namun, ketika menyangkut seluruh dokumen, opsi saya cukup terbatas. Saya bisa menyalin dokumen chunk-by-chunk, atau
scp
ke mesin lokal.
Apakah ada cara untuk menggunakan program seperti xclip
yang akan memungkinkan saya untuk menyalin jarak jauh stdin
ke papan klip server X lokal? Sesuatu untuk efek:
cat myconffile.conf | sed {...} | copy-over-ssh-to-local-clipboard
akan menjadi hebat. Apakah ada sesuatu yang memungkinkan hal ini terjadi?
Anda tidak perlu sesuatu yang istimewa; sejak
xclip
bekerjastdin
, hanyaMengapa perlu dimodifikasi dengan
sed
?ssh
transparan untuk data saat tidak digunakan sebagai terminal, dan umumnya digunakan dalam jaringan pipa sepertisumber
stdin
sebelum menyalinnya ke clipboard, saya ingin opsi itu.ssh
sesi yang ada (itu tidak akan sangat aman jika Anda bisa). Anda dapat mengaturssh
ControlMaster
hal - hal untuk multiplex koneksi tambahan lebih dari yang sudah ada, tetapi itu tidak benar-benar sesuatu untuk pemula dan Anda masih melakukannya dengan cara yang sama sesudahnya, dengan beralih ke terminal lokal lain dan menjalankan perintah di atas (yang tidak membuka yang baru jendela terminal).Begini cara Anda melakukannya di OSX dari mesin lokal Anda
sumber
jika mesin lokal Anda menjalankan windows (7+) Anda bisa menggunakan ini dari CommandLine:
sumber
~ / .ssh / config:
/ etc / ssh / sshd_config:
pesta:
sumber
Sangat mirip dengan solusi @ d-raev dan @ william-casarin, namun berbeda, jadi saya berbagi apa yang bekerja untuk saya.
Perintah
Penjelasan
Ini digunakan
ssh
untuk membuat terowongan yang aman, masuk keuser
@host
atauip
, kemudian jalankancat
untuk mencetak konten<myconffile.conf
untukstdout
kemudian mengirimkannya ke perintahxclip -sel clip
pada mesin lokal Anda, yang menempatkan konten<myconffile.conf
ke clipboard pada mesin lokal Anda.Contoh penggunaan dunia nyata
Saya menggunakan struktur perintah ini untuk tugas-tugas seperti menempelkan kunci ssh ke github (memungkinkan pilihan ctrl-V sederhana atau menempel setelah saya menjalankan perintah) pada dengan Bash di Ubuntu 16.04 dan 18.04. Memeriksa
man ssh
,man cat
danman xclip
untuk perilaku dan pilihan detail.sumber
xclip
tidak akan berjalan karena tidak ada X.Saya memiliki masalah yang serupa dengan clipboard LUbuntu
lxterminal
(berbagai terminal yang diuji) menempel padassh
sesi. Jika clipboard memiliki lebih dari sekitar 100 byte, batas waktu sesi dan gagal.Jika saya terhubung melalui ssh ke hampir semua server CentOS 5.x dan kemudian terhubung ke server target, pasta clipboard berfungsi tanpa masalah untuk ukuran data yang masuk akal.
sumber
Menyalin dari server tanpa kepala ke papan klip lokal, dari dalam sesi SSH yang biasa Anda lakukan:
Instal
ncat
di mesin lokal dan jarak jauh Anda. (Pada mesin jarak jauh Anda juga dapat Anda lakukan dengannc
atau polostelnet
, tetapi pada mesin lokal kami membutuhkan opsi untuk menjalankan perintah (-c
/-e
) yang tidak tersedia dinc
distribusi biasa seperti Debian dan Ubuntu.)Di mesin lokal Anda, atur server mendengarkan pada antarmuka lokal yang akan menyalin konten yang masuk pada port 10009 ke papan klip X Anda:
Atau gunakan versi tulisan tangan yang sepadan:
SSH ke mesin jarak jauh sedemikian rupa sehingga terowongan terbalik dibuat dari port 10008 mesin jarak jauh ke port 10009 pada mesin lokal Anda (di mana server Anda mendengarkan). Anda dapat menggunakan sesi SSH itu untuk pekerjaan normal Anda.
Saat Anda ingin menyalin konten file dari mesin jarak jauh ke clipboard lokal, jalankan di shell SSH:
Dan tentu saja, itu lebih baik bila dikemas sebagai shell shortcut atau script. Kita bisa menyebutnya
rclip
untuk "[copy ke] clipboard jarak jauh" dalam analogi dengan yang terkenalxclip
.Keuntungan
Tidak perlu membuka sesi SSH lain ke mesin jarak jauh.
Tidak perlu untuk
xclip
pada mesin jarak jauh, jadi itu berfungsi jika Anda tidak dapat menginstalnya atau tidak dapat menggunakannya karena ini adalah server tanpa kepala tanpa X.Keamanan
Kami melakukannya
ncat -l localhost 10009
untuk server, yang berarti server hanya mendengarkan antarmuka jaringan denganlocalhost
alamat IP. Antarmuka loop lokal ini hanya memungkinkan koneksi dari mesin Anda sendiri (termasuk, dalam hal ini, mereka yang melakukan tunnel terbalik melalui SSH). Jadi, bahkan jika Anda tidak berada di belakang firewall, port 10009 Anda tidak terpapar pada siapa pun di Internet.Sumber
Diadaptasi dari gist dergachev / ssh-forward-clipboard.md untuk bekerja di Linux. Inti itu juga berisi instruksi tentang cara membuat terowongan terbalik SSH sebagai default.
sumber
https://secure.wikimedia.org/wikipedia/en/wiki/Base64
Anda dapat mengonversi data clipboard Anda dengan teks Base64 ke ASCII. Kemudian Anda dapat mendorongnya melalui koneksi SSH yang sudah ada.
sumber