Est-il possible de configurer ssh (sous linux) pour autoriser l'accès au tunneling uniquement? Ie utilisateur peut configurer des tunnels mais ne peut pas obtenir un shell / accéder aux fichiers?
linux
ssh
ssh-tunnel
Seconde
la source
la source
-N
, il a accès au shell. Cela ne résout vraiment pas le problème et est dangereux./bin/false
shell, vous n'aurez pas accès au shell, car chaque session de connexion se terminera immédiatement.Dans le fichier .ssh / authorized_keys de l'utilisateur, mettez quelque chose comme ceci:
Donc, fondamentalement, vous les contrôles seraient en face de la clé publique ssh de l'utilisateur séparés par un espace. Dans l'exemple, les connexions utilisant la clé publique spécifique seront autorisées à effectuer la redirection de port SSH uniquement vers le serveur MySQL de 192.168.1.10 et le serveur Web de 10.0.0.16, et ne recevront pas de shell (no-pty). Vous posez spécifiquement des questions sur l'option "no-pty", mais les autres peuvent également être utiles si l'utilisateur est uniquement censé tunneler vers des serveurs spécifiques.
Consultez la page de manuel de sshd pour plus d'options pour le fichier authorized_keys .
Notez que l'expérience de l'utilisateur peut sembler un peu étrange: quand ils ssh dedans, il semblera que la session est suspendue (car ils n'obtiennent pas de pty). C'est bon. Si l'utilisateur a spécifié la redirection de port avec, par exemple, "-L3306: 192.168.1.10: 3306", la redirection de port sera toujours en vigueur.
Dans tous les cas, essayez-le.
la source
no-pty
n'empêche pas l'accès au shell, il ne donne tout simplement pas de pty au shell. Il n'affiche pas l'invite (c'est-à-dire "semble se bloquer"), mais vous pouvez toujours donner des commandes très bien. Vous avez besoin de l'command="..."
option.ssh/authorized_keys
si vous souhaitez restreindre l'accès au shell à partir de là.Donnez à l'utilisateur un shell qui ne lui permet que de se déconnecter, comme
/bin/press_to_exit.sh
De cette façon, il peut rester connecté aussi longtemps qu'il le souhaite, avec des tunnels actifs, mais n'exécuter aucune commande.
Ctrl-c
ferme la connexion.la source
Attribuez un shell qui ne permet pas à l'utilisateur de se connecter.
par exemple
les empêcherait d'obtenir une invite du shell et leur donnerait un délai d'expiration de 60 secondes - s'il n'y a pas de connexion active pendant 60 secondes, il se fermerait et les déconnecterait ainsi complètement (augmentez le nombre en fonction des besoins).
Ils ne peuvent pas non plus exécuter une commande à distance, car ce shell ne les autorisera pas.
la source
logout
" sur un script normal./sbin/nologin
, que vous pouvez personnaliser avec un message convivial dans/etc/nologin.txt
.Ma solution est de fournir à l'utilisateur qui ne peut tunneler, sans shell interactif , de définir ce shell dans / etc / passwd sur / usr / bin / tunnel_shell .
Créez simplement le fichier exécutable / usr / bin / tunnel_shell avec une boucle infinie .
Utilisez également l' option
AllowGroups
etMatch Group
.Entièrement expliqué ici: http://blog.flowl.info/2011/ssh-tunnel-group-only-and-no-shell-please/
la source