Apakah mungkin untuk mengkonfigurasi ssh (di linux) untuk memungkinkan akses untuk penerowongan saja? Yaitu pengguna dapat mengatur terowongan tetapi tidak bisa mendapatkan file shell / akses?
linux
ssh
ssh-tunnel
Kedua
sumber
sumber
-N
, mereka memiliki akses shell. Ini benar - benar tidak menyelesaikan masalah dan berbahaya./bin/false
shell, Anda tidak akan memiliki akses shell, karena setiap sesi login akan segera berakhir.Di file .ssh / official_keys pengguna, masukkan sesuatu seperti berikut ini:
Jadi, pada dasarnya, Anda kontrol akan berada di depan kunci publik ssh pengguna dipisahkan oleh spasi. Dalam contoh ini, koneksi yang menggunakan kunci publik tertentu akan diizinkan untuk melakukan penerusan port SSH hanya ke server MySQL 192.168.1.10 dan server web 10.0.0.16, dan tidak akan diberi shell (no-pty). Anda secara khusus bertanya tentang opsi "no-pty", tetapi yang lain juga mungkin berguna jika pengguna hanya perlu melakukan tunnel ke server tertentu.
Lihatlah halaman manual untuk sshd untuk opsi lebih lanjut untuk file Authorized_key .
Perhatikan bahwa pengalaman pengguna mungkin terlihat sedikit aneh: ketika mereka ssh in, itu akan terlihat seperti sesi menggantung (karena mereka tidak mendapatkan pty). Tidak apa-apa. Jika pengguna telah menentukan penerusan port dengan, misalnya, "-L3306: 192.168.1.10: 3306", penerusan port masih akan berlaku.
Bagaimanapun, cobalah.
sumber
no-pty
tidak mencegah akses shell, itu hanya tidak memberi shell pty. Itu tidak menampilkan prompt (mis. "Tampaknya hang"), tetapi Anda masih dapat memberikan perintah dengan baik. Anda memerlukancommand="..."
opsi.ssh/authorized_keys
jika Anda ingin membatasi akses shell dari sana.Berikan pengguna shell yang hanya memungkinkan mereka untuk logout seperti
/bin/press_to_exit.sh
Dengan cara ini dia bisa tetap masuk selama dia mau, dengan terowongan aktif, tetapi tidak menjalankan perintah apa pun.
Ctrl-c
menutup koneksi.sumber
Tetapkan shell yang tidak membiarkan pengguna masuk.
misalnya
akan mencegah mereka mendapatkan shell prompt, dan memberi mereka batas waktu 60 detik - jika tidak ada koneksi yang aktif selama 60 detik maka itu akan keluar dan dengan demikian memutuskan sambungan mereka sepenuhnya (menambah jumlahnya sesuai dengan persyaratan).
Mereka juga tidak dapat menjalankan perintah jarak jauh, karena shell itu tidak akan membiarkannya.
sumber
logout
" pada yang normal./sbin/nologin
, yang dapat Anda sesuaikan dengan pesan yang mudah digunakan di/etc/nologin.txt
.Solusi saya adalah menyediakan pengguna yang hanya melakukan tunneling, tanpa shell interaktif , untuk mengatur shell di / etc / passwd ke / usr / bin / tunnel_shell .
Cukup buat file executable / usr / bin / tunnel_shell dengan infinite loop .
Selain itu gunakan opsi
AllowGroups
danMatch Group
.Dijelaskan sepenuhnya di sini: http://blog.flowl.info/2011/ssh-tunnel-group-only-and-no-shell-please/
sumber