47 votes

Ssh tunneling seulement accès

Est-il possible de configurer ssh (sous Linux) pour autoriser uniquement l'accès au tunneling ? C'est-à-dire que l'utilisateur peut configurer des tunnels mais ne peut pas obtenir un shell/accéder aux fichiers ?

65voto

coobird Points 70356

Oui, il suffit d'utiliser /bin/false comme shell et d'instruire l'utilisateur de démarrer le processus de tunnel SSH sans exécuter de commande à distance (c'est-à-dire le drapeau -N pour OpenSSH) :

ssh -N -L 1234:cible-hôte:5678 hôte-ssh

13voto

cjc Points 24265

Dans le fichier .ssh/authorized_keys de l'utilisateur, mettez quelque chose comme ce qui suit:

permitopen="192.168.1.10:3306",permitopen="10.0.0.16:80",no-pty ssh-rsa AAAAB3N...

Donc, en gros, les contrôles seraient devant 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 uniquement un transfert de port SSH vers le serveur MySQL de 192.168.1.10 et le serveur web de 10.0.0.16, et ne se verront pas attribuer de shell (no-pty). Vous vous renseignez spécifiquement sur l'option "no-pty", mais les autres peuvent également être utiles si l'utilisateur est censé se connecter uniquement à des serveurs spécifiques.

Consultez la page de manuel de sshd pour plus d'options pour le fichier authorized_keys.

Remarquez que l'expérience de l'utilisateur peut sembler un peu étrange : lorsqu'il se connecte en SSH, il semblera que la session est suspendue (car il n'obtient pas de pty). C'est normal. Si l'utilisateur a spécifié un transfert de port avec, par exemple, "-L3306:192.168.1.10:3306", le transfert de port sera toujours en vigueur.

En tout cas, essayez-le.

3voto

Tinkerbell Points 47

Donnez à l'utilisateur un shell qui ne lui permet que de se déconnecter comme par exemple /bin/press_to_exit.sh

#!/bin/bash
read -n 1 -p "Appuyez sur une touche pour sortir" touche

De cette façon, il peut rester connecté aussi longtemps qu'il le souhaite, avec des tunnels actifs, mais sans exécuter de commandes. Ctrl-c ferme la connexion.

2voto

IaCoder Points 2449

Attribuez un shell qui n'autorise pas l'utilisateur à se connecter.

par exemple

#!/bin/sh
echo "Aucune connexion interactive disponible."
sleep 60
exit 0

les empêcherait d'obtenir un invite de commande shell, et leur donnerait un délai de 60 secondes - s'il n'y a pas de connexion active pendant 60 secondes, il se fermera et les déconnectera complètement (augmentez ce nombre selon les besoins).

Ils ne peuvent pas non plus exécuter de commande à distance, car ce shell ne le leur permettra pas.

2voto

Aviv Lo Points 287
##Créer un nouvel utilisateur

sudo useradd -m [user]

##Modifier /etc/ssh/sshd_config

Match User [user]
   #AllowTcpForwarding yes
   #X11Forwarding no
   #PermitTunnel no
   GatewayPorts yes ##Activer l'écoute sur 0.0.0.0
   AllowAgentForwarding no
   PermitOpen localhost:2888 ##spécifier le port
   ForceCommand echo 'Cet compte ne peut être utilisé que pour le tunneling'

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X