Bisakah perintah dieksekusi lebih dari ssh dengan pengguna nologin?

13

Jika seorang pengguna memilikinya loginShell=/sbin/nologinapakah masih mungkin

ssh user@machine [command]

dengan asumsi bahwa pengguna memiliki kunci ssh yang tepat di direktori home-nya yang dapat digunakan untuk otentikasi?

Tujuan saya adalah untuk menjaga pengguna sebagai nologin, tetapi masih dapat menjalankan perintah pada beberapa mesin lain di jaringan (mirip dengan penggunaannya melalui 'sudo -u'), dan saya bertanya-tanya apakah ini kursus yang masuk akal.

Centimane
sumber
1
Itu harus bekerja. The commanddijalankan bukan dari shell login.
orion
1
Ini mengalahkan tujuan mengkonfigurasi /sbin/nologinsebagai shell. Jika kekhawatiran Anda adalah keamanan akun maka menonaktifkan auth kata sandi dan menggunakan kunci ssh sudah cukup.
Creek
@Creek ada perbedaan antara shell login dan instance shell lainnya. Jadi, apa yang dia minta tidak selalu mengalahkan tujuan / sbin / nologin. Mungkin dia ingin melakukan beberapa pekerjaan di luar konteks shell login.
Michael Martinez
7
@ orion Wrong. Perintah dijalankan oleh shell login.
Gilles 'SO- stop being evil'
@MichaelMartinez dalam konteks contohnya, jika shell /sbin/nologinpengguna maka pengguna tidak akan dapat login atau menjalankan perintah pada mesin. cronjobs dapat dijalankan sebagai pengguna dan sftpdapat dikonfigurasi untuk membuka sesi, tetapi membuka shell melalui ssh tidak akan terjadi
Creek

Jawaban:

17

Menetapkan /sbin/nologinsebagai shell pengguna (atau /bin/falseatau /bin/true, yang hampir setara ) melarang pengguna dari login untuk menjalankan perintah apa pun. SSH selalu memanggil shell login pengguna untuk menjalankan perintah, jadi Anda perlu mengatur shell login ke yang bisa menjalankan beberapa perintah.

Ada beberapa shell terbatas yang memungkinkan pengguna untuk menjalankan hanya beberapa perintah. Misalnya rssh dan scponly keduanya kerang seperti yang memungkinkan pengguna untuk menjalankan perintah yang telah ditetapkan beberapa (seperti scp, sftp-server, rsync, ...). Lihat juga Membatasi akses pengguna di linux dan Apakah Anda memerlukan shell untuk SCP?

Gilles 'SANGAT berhenti menjadi jahat'
sumber
Terima kasih, saya akhirnya mengundurkan diri untuk memberikan shell login akun sehingga dapat menjalankan perintah jarak jauh. Solusi yang lebih baik mungkin ssh sebagai pengguna saat ini dan memanggil sudo -u untuk perintah ssh, tapi itu tidak sepenuhnya berlaku dalam kasus saya.
Centimane
1

Sepertinya jawabannya tidak.

ssh user@machine [command]

dengan kunci ssh pada tempatnya hanya menghasilkan:

This account is currently not available

daripada menjalankan perintah, sepertinya saya harus memberikannya akses ke bash.

Centimane
sumber
-4

Saya tidak tahu apakah itu mungkin (seharusnya mudah untuk diuji) tetapi ada fitur yang mungkin menjawab pertanyaan Anda dengan cara tertentu dan dalam hal apa pun menyelesaikan masalah Anda.

Anda dapat menambahkan perintah ke baris kunci di authorized_keys. Dalam hal ini perintah ini dijalankan, tidak ada yang lain. Saya menganggap ini berfungsi dengan baik /sbin/nologinkarena shell harus diabaikan.

Tetapi Anda akan membutuhkan kunci yang berbeda untuk setiap perintah yang Anda izinkan.

Hauke ​​Laging
sumber
Sayangnya solusi yang saya butuhkan harus lebih fleksibel daripada ini
Centimane
jika mudah untuk diuji, maka Anda harus mengujinya sebelum menulis jawaban.
Michael Martinez
@MichaelMartinez Merupakan tugas si penanya untuk melakukan tes-tes mudah sebelum bertanya. Tidak sulit untuk memperhatikan bahwa tidak menjawab pertanyaan tetapi membuat proposal untuk masalah yang menyebabkan pertanyaan. Yang sangat cocok sebagai jawaban. Downvoting ini hanya bodoh. Apakah Anda akan mengkritik jawabannya tanpa paragraf pertama? Persis.
Hauke ​​Laging
3
Perintah in authorized_keysdijalankan oleh shell login, jadi tidak, ini tidak berfungsi (bukan tanpa konfigurasi non-sepele tambahan). (Bagaimana menurunkan jawaban yang salah "bodoh"? Harap hormati orang lain .)
Gilles 'SO- stop being evil'