Anda hanya dapat memiliki satu perintah per kunci, karena perintah itu "dipaksa".
Tetapi Anda dapat menggunakan skrip wrapper. Perintah yang dipanggil mendapatkan baris perintah asli sebagai variabel lingkungan $SSH_ORIGINAL_COMMAND
, yang dapat dievaluasi.
Misalnya, masukkan ~/.ssh/allowed-commands.sh
:
#!/bin/sh
#
# You can have only one forced command in ~/.ssh/authorized_keys. Use this
# wrapper to allow several commands.
case "$SSH_ORIGINAL_COMMAND" in
"systemctl restart cups")
systemctl restart cups
;;
"shutdown -r now")
shutdown -r now
;;
*)
echo "Access denied"
exit 1
;;
esac
Kemudian referensi ~/.ssh/authorized_keys
dengan
command="/home/user/.ssh/allowed-commands.sh",…
SSH_ORIGINAL_COMMAND
(perman sshd
) sehingga tersedia dalam skrip. Juga untuk memberikan contoh untuk skrip otomatis yang memungkinkan pola tertentuSSH_ORIGINAL_COMMAND
dijalankan. Lihat juga unixwars.blogspot.com/2014/12/getting-sshoriginalcommand.htmlDalam SSH yang hebat , buku The Secure Shell: The Definitive Guide karya O'Reilly, dalam bab delapan, ada contoh yang bagus diberikan dengan menggunakan skrip seperti berikut:
Menggunakan ini di
.authorized_keys
file Anda seperti:... memberi Anda ini saat melakukan
ssh
:sumber
scp
,sftp
dan semua hal lain yang mungkin berguna untuk Anda kelak.command
opsi secara umum?Pendekatan lain menggunakan misalnya shell terbatas untuk pengguna yang diberikan atau menggunakan pembungkus yang menahan perintah untuk semua file / skrip yang ditemukan di direktori tertentu, sehingga memungkinkan untuk menambah daftar perintah tanpa mengubah pembungkus.
Artikel lain menjelaskan skrip generik, yang juga memungkinkan argumen baris perintah ke perintah yang diizinkan, tetapi memungkinkan untuk menguncinya dengan aturan yang dinyatakan sebagai ekspresi reguler.
Contoh ini akan diungkapkan dengan cara berikut:
Dan sebuah
.onlyrules
file akan dibuat dengan konten ini:Keuntungan dari pendekatan 'satu-satunya' ini adalah bahwa tidak perlu menulis skrip individual untuk setiap pengguna dan situasi.
sumber
ForcedCommand