Existe-t-il un moyen de configurer un utilisateur sur une machine Linux (Centos 5.2 dans ce cas) afin qu'il puisse utiliser scp pour récupérer des fichiers, mais qu'il ne puisse pas se connecter au serveur en utilisant SSH ?
Réponses
Trop de publicités?DÉCRYPTÉ : Veuillez noter que la réponse suivante est périmée. rssh n'est plus maintenu et n'est plus une méthode sécurisée.
rssh Shell ( http://pizzashack.org/rssh/ ) est conçu précisément dans ce but.
Comme RHEL/CentOS 5.2 n'inclut pas de paquetage pour rssh, vous pouvez chercher ici pour obtenir un RPM : http://dag.wieers.com/rpm/packages/rssh/
Pour l'utiliser, il suffit de le définir comme un Shell pour un nouvel utilisateur comme ceci :
useradd -m -d /home/scpuser1 -s /usr/bin/rssh scpuser1
passwd scpuser1
..ou changer le Shell pour un existant comme ceci :
chsh -s /usr/bin/rssh scpuser1
..et modifier /etc/rssh.conf
pour configurer rssh Shell - surtout décommenter allowscp
pour activer l'accès SCP pour tous les utilisateurs de rssh.
(Vous pouvez également vouloir utiliser chroot pour que les utilisateurs restent confinés dans leurs maisons, mais c'est une autre histoire).
Je suis très en retard sur ce sujet mais vous pourriez utiliser des clés ssh et spécifier la commande exacte autorisée dans leur fichier ~/.ssh/authorized_keys par exemple.
no-port-forwarding,no-pty,command="scp source target" ssh-dss ...
Vous devrez peut-être utiliser ps to sur la cible pour définir les bons paramètres de commande.
PS : Si vous exécutez une commande scp de test avec "-v" vous pouvez voir quelque chose comme ceci
debug1: Sending command: scp -v -t myfile.txt
Vous remarquerez que "-t" est une option scp non documentée, utilisée par le programme à l'autre bout. Cela vous donne une idée de ce que vous devez mettre dans authorized_keys.
EDIT : Vous pouvez trouver plus d'informations (avec plusieurs liens) dans cette question de StackOverflow .
Voici un exemple concret, pour un utilisateur nommé backup_user
du côté du serveur.
~backup_user/.ssh/authorized_keys
le contenu du côté serveur (avec quelques restrictions de sécurité supplémentaires) :
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="scp -v -r -d -t ~/CONTENT" ssh-rsa AAAAMYRSAKEY...
Créez un lien dans ~backup_user/ qui renvoie au répertoire où le contenu doit être accessible.
$ ln -s /path/to/directory/with/accessible/content ~backup_user/CONTENT
Maintenant, du côté client, la commande suivante devrait fonctionner :
scp -v -r -P 2222 -i .ssh/id_rsa_key_file path/to/data backup_user@SERVER:~/CONTENT
Ce que fait cette commande :
- Il affiche des informations verbeuses ( optionnel : vous pouvez retirer le
-v
de la commande et du fichier authorized_keys) - Il copie récursivement le contenu du chemin/vers/données. ( optionnel : vous pouvez supprimer
-r
de la commande et du fichier authorized_keys si vous ne voulez pas faire une copie récursive) - Il utilise le port 2222 pour se connecter au serveur ( optionnel : vous pouvez supprimer
-P 2222
de la commande) - Il utilise un fichier d'identité pour automatiser la connexion ( optionnel : vous pouvez supprimer
-i .ssh/id_rsa_key_file
- Le contenu de
path/to/data
sera copié dans/path/to/directory/with/accessible/content/
Pour faire une copie d'un fichier (ou plusieurs) du serveur vers le client, vous devez créer un Shell Shell qui s'occupe de cela. comme décrit ici
J'arrive un peu tard dans la soirée, mais je vous suggère de jeter un coup d'oeil au ForceCommand
d'OpenSSH.
Subsystem sftp internal-sftp
Match group sftponly
ForceCommand internal-sftp
Certes, il s'agit de SFTP et non de SCP, mais cela permet d'atteindre le même objectif, de manière plus sûre qu'avec un Shell restreint. En outre, vous pouvez chrooter l'utilisateur si vous le souhaitez.
J'utilise MySecureShell pour ce faire. Vous pouvez également configurer d'autres restrictions.
https://github.com/mysecureshell/mysecureshell
Limite les connexions à SFTP/SCP uniquement. Pas d'accès à Shell.
Je vous recommande d'utiliser scponly.
Il s'agit d'un Shell restreint qui permet aux utilisateurs de faire exactement ce qu'il semble être, des fichiers SCP vers le serveur, mais sans se connecter. Des informations et des téléchargements de code source pour le logiciel sont disponibles aquí et les paquets RPM précompilés sont disponibles via la page Dépôts YUM d'EPEL .
Une fois installé, vous devrez configurer chaque compte utilisateur, dont vous souhaitez restreindre l'accès, pour utiliser le Shell restreint nouvellement installé. Vous pouvez le faire manuellement via /etc/passwd ou utiliser la commande suivante : usermod -s /usr/bin/scponly USERNAME
- Réponses précédentes
- Plus de réponses