Pertanyaan Borderline ServerFault, tapi saya memprogram beberapa skrip shell, jadi saya coba di sini dulu :)
Kebanyakan * nixes memiliki perintah yang akan membiarkan Anda mem-pipe / mengarahkan output ke clipboard / pasteboard lokal, dan mengambil dari yang sama. Pada OS X perintah ini adalah
pbcopy, pbpaste
Apakah ada cara untuk mereplikasi fungsi ini ketika SSHed ke server lain? Itu adalah,
- Saya menggunakan Komputer A.
- Saya membuka jendela terminal
- I SSH ke Komputer B
- Saya menjalankan perintah di Komputer B
- Output dari Komputer B diarahkan atau secara otomatis disalin ke clipboard Computer A.
Dan ya, saya tahu saya bisa (gemetar) menggunakan mouse saya untuk memilih teks dari perintah, tapi saya sudah terbiasa dengan alur kerja pipping output langsung ke clipboard yang saya ingin sama untuk sesi jarak jauh saya.
Kode bermanfaat, tetapi pendekatan umum juga dihargai.
:'<,'>w !ssh desktop pbcopy
-e none
bendera ssh yang dijelaskan di sini: unix.stackexchange.com/questions/210615/…Cara favorit saya adalah
ssh [remote-machine] "cat log.txt" | xclip -selection c
. Ini sangat berguna ketika Anda tidak ingin (atau tidak bisa) ssh dari jarak jauh ke lokal.Sunting: di Cygwin
ssh [remote-machine] "cat log.txt" > /dev/clipboard
.Sunting: Komentar bermanfaat dari nbren12:
sumber
ssh [remote-machine] "cat log.txt" | pbcopy
cat
ini untuk bekerja di cygwin Windows 8:ssh [remote-machine] "cat log.txt" | cat > /dev/clipboard
(tentu saja, perintah jarak jauh saya tidakcat
; itu adalah sesuatu yang lain di dalam mesin virtual gelandangan jadi saya benar-benar berlarivagrant ssh -c "command" | cat > /dev/clipboard
)RemoteForward 127.0.0.1:2222 127.0.0.1:22
entri server di lokal Anda.ssh/config
, dan kemudian jalankanssh -p 2222 127.0.0.1
pada mesin jarak jauh, yang kemudian akan mengarahkan kembali koneksi ke mesin lokal.Menemukan solusi hebat yang tidak memerlukan koneksi ssh terbalik!
Anda dapat menggunakan xclip pada host jarak jauh, bersama dengan ssh penerusan X11 & XQuartz pada sistem OSX.
Untuk mengatur ini:
,
)ssh -X remote-host "echo 'hello from remote-host' | xclip -selection clipboard"
sumber
ssh remote-host "echo 'hello from remote-host' | pbcopy
? Ini akan menjadi jawaban yang sangat baik jika itu akan bekerja seperti ini:ssh -X remote-host
kemudian pada host jarak jauh:echo 'hello from remote-host' | xclip -selection clipboard
-X
X11 Forwarding melalui SSH, program X11 akan dapat memperbarui clipboard Anda melalui pengaturan XQuartz di atas. Perintah satu kali adalah untuk menunjukkan bahwa mengirim sesuatu melaluiecho
ke clipboard host jarak jauh viaxclip
berfungsi dan harus disinkronkan ke host klien SSH lokal Anda. Catatan seperti @ gdw2 mengatakan, "Ada| xclip
di dalam tanda kutip ganda". Dengan demikian, itu akan dieksekusi sebagai perintah pada server jauh untuk mengirim sesuatu ke clipboard itu.Membalikkan port terowongan pada server ssh
Semua solusi yang ada perlu:
xclip
pada server berfungsi dengan baik) atauBerikut cara lain untuk melakukannya, meskipun Anda harus memodifikasi cara Anda ssh ke komputer.
Saya sudah mulai menggunakan ini dan itu sama sekali tidak mengintimidasi seperti kelihatannya jadi cobalah.
Klien (startup sesi ssh)
(petunjuk: jadikan ini pengikat kunci sehingga Anda tidak perlu mengetiknya)
Klien (tab lain)
Catatan: jika Anda tidak memilikinya
pbcopy
maka cukuptee
ke file.Server (di dalam sesi SSH)
Catatan lain
Sebenarnya bahkan jika Anda berada di tengah sesi ssh ada cara untuk memulai sebuah terowongan tetapi saya tidak ingin menakut-nakuti orang dari apa yang sebenarnya tidak seburuk kelihatannya. Tetapi saya akan menambahkan detailnya nanti jika saya melihat minat
sumber
cat some_useful_content.txt | nc localhost 2000
perintahnya sepertinya hang ketika saya melakukan ini. Saya perlu secara manual ctr-c untuk menghentikannya, dan hanya saat itulah konten sampai ke klip / papan tulis klien sayanc -l -p
bekerja untuk saya, tetapinc -l
tidak. Dan saya punya masalah @AlanStorm juga.-c
. Saya menggunakan GNU netcat yang diinstal oleh brew.Ada berbagai alat untuk mengakses pilihan X11, termasuk xclip dan XSel . Perhatikan bahwa X11 secara tradisional memiliki banyak pilihan, dan sebagian besar program memiliki pemahaman tentang clipboard dan pemilihan utama (yang tidak sama). Emacs dapat bekerja dengan seleksi sekunder juga, tapi itu jarang terjadi, dan tidak ada yang benar-benar tahu apa yang harus dilakukan dengan buffer cut ...
Singkatnya, Anda harus mencoba
xclip -i
/xclip -o
atauxclip -i -sel clip
/xclip -o -sel clip
atauxsel -i
/xsel -o
atauxsel -i -b
/xsel -o -b
, tergantung pada apa yang Anda inginkan.sumber
ssh -C -X user@remote-host
. Jika menjalankan xclip di sisi jarak jauh sepertinya tidak berfungsi, pastikanX11Forwarding yes
sudah diatur dalam/etc/ssh/sshd_config
file jarak jauh . Pastikanxauth
juga dipasang di sisi jarak jauh. Untuk mesin tanpa kepala, Anda dapat menginstalxauth
danxvfb
.xvfb
menyebutkannya. Saya menjalankan server tanpa kepala, jadi X11 pasti tidak berjalan!Ini adalah solusi saya berdasarkan reverse tunnel SSH, netcat dan xclip.
Pertama buat skrip (mis. Clipboard-daemon.sh) di workstation Anda:
dan mulai di latar belakang.
Ini akan mulai nc piping output ke xclip dan proses respawning setelah menerima bagian dari data
Kemudian mulai koneksi ssh ke host jarak jauh:
Saat masuk di kotak jauh, coba ini:
lalu coba tempel di workstation Anda
Anda tentu saja dapat menulis skrip wrapper yang memulai clipboard-daemon.sh terlebih dahulu dan kemudian sesi ssh. Beginilah cara kerjanya untuk saya. Nikmati.
sumber
Bukan satu-liner, tetapi tidak memerlukan ssh tambahan .
netcat
jika perlucat ~/some_file.txt | nc termbin.com 9999
. Ini akan menyalin output ketermbin
situs web dan mencetak URL ke output Anda.Tentu saja, jangan menggunakannya untuk konten sensitif.
sumber
Jawaban ini berkembang pada jawaban yang dipilih dengan menambahkan lebih banyak keamanan.
Jawaban itu membahas bentuk umum
Di mana keamanan mungkin kurang dalam
ssh
hak akses yang memungkinkan<user B>
padahost B>
kessh
dalamhost A
dan menjalankan setiap perintah.Tentu saja
B
untukA
mengakses mungkin sudah dilindungi olehssh
kunci, dan bahkan mungkin memiliki kata sandi. Tetapi lapisan keamanan lain dapat membatasi ruang lingkup perintah yang diizinkan yangB
dapat dijalankanA
, misalnya sehinggarm -rf /
tidak dapat dipanggil. (Ini sangat penting ketikassh
kunci tidak memiliki kata sandi.)Untungnya,
ssh
memiliki fitur bawaan yang disebut pembatasan perintah atau perintah paksa . Lihat ssh.com , atau pertanyaan serverfault.com ini .Solusi di bawah ini menunjukkan solusi bentuk umum bersama dengan
ssh
pembatasan perintah yang diberlakukan.Contoh Solusi dengan batasan perintah ditambahkan
Solusi keamanan yang ditingkatkan ini mengikuti formulir umum - panggilan dari
ssh
sesi aktifhost-B
hanya:Sisanya menunjukkan pengaturan untuk membuatnya bekerja.
Pengaturan pembatasan perintah ssh
Misalkan akun pengguna di
B
yaituuser-B
, dan B memiliki kunci sshid-clip
, yang telah dibuat dengan cara yang biasa (ssh-keygen
).Lalu di
user-A
direktori ssh ada fileyang mengenali kunci
id-clip
dan memungkinkanssh
koneksi.Biasanya isi dari setiap baris
authorized_keys
persis kunci publik yang diotorisasi, misalnya isiid-clip.pub
.Namun, untuk menegakkan pembatasan perintah bahwa konten kunci publik diawali (pada baris yang sama) oleh perintah yang akan dieksekusi.
Dalam kasus kami:
Perintah yang ditunjuk
"/home/user-A/.ssh/allowed-commands.sh id-clip"
, dan hanya perintah yang ditunjuk, dieksekusi setiap kali kunciid-clip
digunakan memulaissh
koneksi kehost-A
- tidak peduli apa perintah yang dituliskanssh
baris perintah .Perintah menunjukkan file skrip
allowed-commands.sh
, dan konten file skrip ituPanggilan asli ke
ssh
mesinB
adalahString
to-clipboard
dilewatkanallowed-commands.sh
oleh variabel lingkunganSSH_ORIGINAL_COMMAND
. Selain itu, kami telah memasukkan nama kunciid-clip
, dari barisauthorized_keys
yang hanya dapat diakses olehid-clip
.Garis
hanya kotak pesan popup untuk memberi tahu Anda bahwa clipboard sedang ditulis - itu mungkin fitur keamanan yang baik juga. (
notify-send
berfungsi di Ubuntu 18.04, mungkin bukan yang lain).Dalam barisan
parameter
--display :0
ini diperlukan karena prosesnya tidak memiliki tampilan X sendiri dengan clipboard, sehingga harus dikhususkan secara eksplisit. Nilai ini:0
berfungsi pada Ubuntu 18.04 dengan server Windows Wayland. Pada pengaturan lain mungkin tidak berfungsi. Untuk server X standar, jawaban ini mungkin membantu.host-A
/etc/ssh/sshd_config
parameterAkhirnya beberapa parameter di
/etc/ssh/sshd_config
hostA
yang harus diatur untuk memastikan izin untuk terhubung, dan izin untuk menggunakanssh
-kunci saja tanpa kata sandi:Untuk membuat
sshd
server membaca ulang konfigurasiatau
kesimpulan
Ini beberapa upaya untuk mengaturnya, tetapi fungsi-fungsi lain selain
to-clipboard
dapat dibangun secara paralel dengan kerangka kerja yang sama.sumber
@rhileighalmgren solusi bagus, tetapi pbcopy akan menyalin karakter "\ n" terakhir, saya menggunakan "head" untuk menghapus karakter terakhir untuk mencegah hal ini:
Solusi lengkap saya ada di sini: http://taylor.woodstitch.com/linux/copy-local-clipboard-remote-ssh-server/
sumber
Solusi paling sederhana dari semuanya, jika Anda menggunakan OS X menggunakan Terminal dan Anda telah ssh'ing di server jauh dan ingin mengambil hasil dari file teks atau log atau csv, cukup:
1)
Cmd-K
untuk menghapus output terminal2)
cat <filename>
untuk menampilkan isi file3)
Cmd-S
untuk menyimpan Output TerminalAnda akan secara manual menghapus baris pertama dan baris terakhir file, tetapi metode ini sedikit lebih sederhana daripada mengandalkan paket lain yang akan diinstal, "terowongan terbalik" dan mencoba memiliki IP statis, dll.
sumber
scp
!