Jawaban ini berkembang pada jawaban yang dipilih dengan menambahkan lebih banyak keamanan.
Jawaban itu membahas bentuk umum
<command that makes output> | \
ssh <user A>@<host A> <command that maps stdin to clipboard>
Di mana keamanan mungkin kurang dalam sshhak akses yang memungkinkan <user B>pada host B>ke sshdalam host Adan menjalankan setiap perintah.
Tentu saja Buntuk Amengakses mungkin sudah dilindungi oleh sshkunci, dan bahkan mungkin memiliki kata sandi. Tetapi lapisan keamanan lain dapat membatasi ruang lingkup perintah yang diizinkan yang Bdapat dijalankan A, misalnya sehingga rm -rf /tidak dapat dipanggil. (Ini sangat penting ketika sshkunci tidak memiliki kata sandi.)
Untungnya, sshmemiliki 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 sshsesi aktif host-Bhanya:
cat <file> | ssh <user-A>@<host A> to_clipboard
Sisanya menunjukkan pengaturan untuk membuatnya bekerja.
Pengaturan pembatasan perintah ssh
Misalkan akun pengguna di Byaitu user-B, dan B memiliki kunci ssh id-clip, yang telah dibuat dengan cara yang biasa ( ssh-keygen).
Lalu di user-Adirektori ssh ada file
/home/user-A/.ssh/authorized_keys
yang mengenali kunci id-clipdan memungkinkan sshkoneksi.
Biasanya isi dari setiap baris authorized_keyspersis kunci publik yang diotorisasi, misalnya isi id-clip.pub.
Namun, untuk menegakkan pembatasan perintah bahwa konten kunci publik diawali (pada baris yang sama) oleh perintah yang akan dieksekusi.
Dalam kasus kami:
command="/home/user-A/.ssh/allowed-commands.sh id-clip",no-agent-forwarding,no-port-forwarding,no-user-rc,no-x11-forwarding,no-pty <content of file id-clip.pub>
Perintah yang ditunjuk "/home/user-A/.ssh/allowed-commands.sh id-clip", dan hanya perintah yang ditunjuk, dieksekusi setiap kali kunci id-clipdigunakan memulai sshkoneksi ke host-A- tidak peduli apa perintah yang dituliskan sshbaris perintah .
Perintah menunjukkan file skrip allowed-commands.sh, dan konten file skrip itu
#/bin/bash
#
# You can have only one forced command in ~/.ssh/authorized_keys. Use this
# wrapper to allow several commands.
Id=${1}
case "$SSH_ORIGINAL_COMMAND" in
"to-clipboard")
notify-send "ssh to-clipboard, from ${Id}"
cat | xsel --display :0 -i -b
;;
*)
echo "Access denied"
exit 1
;;
esac
Panggilan asli ke sshmesin Badalah
... | ssh <user-A>@<host A> to_clipboard
String to-clipboarddilewatkan allowed-commands.sholeh variabel lingkungan SSH_ORIGINAL_COMMAND. Selain itu, kami telah memasukkan nama kunci id-clip, dari baris authorized_keysyang hanya dapat diakses oleh id-clip.
Garis
notify-send "ssh to-clipboard, from ${Id}"
hanya kotak pesan popup untuk memberi tahu Anda bahwa clipboard sedang ditulis - itu mungkin fitur keamanan yang baik juga. ( notify-sendberfungsi di Ubuntu 18.04, mungkin bukan yang lain).
Dalam barisan
cat | xsel --display :0 -i -b
parameter --display :0ini diperlukan karena prosesnya tidak memiliki tampilan X sendiri dengan clipboard, sehingga harus dikhususkan secara eksplisit. Nilai ini :0berfungsi 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 parameter
Akhirnya beberapa parameter di /etc/ssh/sshd_confighost Ayang harus diatur untuk memastikan izin untuk terhubung, dan izin untuk menggunakan ssh-kunci saja tanpa kata sandi:
PubkeyAuthentication yes
PasswordAuthentication no
ChallengeResponseAuthentication no
AllowUsers user-A
Untuk membuat sshdserver membaca ulang konfigurasi
sudo systemctl restart sshd.service
atau
sudo service sshd.service restart
kesimpulan
Ini beberapa upaya untuk mengaturnya, tetapi fungsi-fungsi lain selain to-clipboarddapat dibangun secara paralel dengan kerangka kerja yang sama.
:'<,'>w !ssh desktop pbcopy