6 votes

ssh plusieurs utilisateurs sur un même poste

Je veux permettre à certains utilisateurs de confiance de transférer des fichiers sur mon serveur (à un utilisateur spécifique), mais je ne veux pas donner à ces utilisateurs un domicile, ni une connexion ssh.

J'ai des difficultés à comprendre les paramètres corrects des utilisateurs/groupes que je dois créer pour que cela soit possible.

Je vais vous donner un exemple ;

Ayant :

  1. MyUser@MyServer
  2. MyUser appartient au groupe MyGroup
  3. La maison de MyUser sera, disons, la suivante, /home/MyUser
  4. SFTPGuy1@OtherBox1
  5. SFTPGuy2@OtherBox2

Ils me donnent leur id_dsa.pub et je l'ajoute à mon authorized_keys

Je pense donc que je ferais dans mon serveur quelque chose comme

useradd -d /home/MyUser -s /bin/false SFTPGuy1 (et la même chose pour l'autre..)

Et pour la dernière, useradd -G MyGroup SFTPGuy1 (et encore, pour l'autre gars)

Je m'attendrais donc à ce que les SFTPGuys puissent sftp -o IdentityFile=id_dsa MyServer et d'être emmené au domicile de MyUser...

Eh bien, ce n'est pas le cas... SFTP continue de me demander un mot de passe.

Quelqu'un pourrait-il m'indiquer ce que j'ai manqué ?

Merci beaucoup,

f.

[ EDIT : Messa sur StackOverflow m'a demandé si le fichier authorized_keys était lisible par les autres utilisateurs (membres de MyGroup). C'est un point intéressant, voici ma réponse :

En fait, il ne l'était pas (il était à 700), mais j'ai ensuite changé les permissions du répertoire .ssh et du fichier d'authentification à 750, mais toujours sans effet. Je pense qu'il est utile de mentionner que mon répertoire personnel ( /home/MyUser ) est également lisible pour le groupe ; la plupart des répertoires étant 750 et le dossier spécifique où ils déposeraient des fichiers étant 770.

Néanmoins, en ce qui concerne le fichier d'authentification, je pense que l'authentification serait effectuée par l'utilisateur local sur MyServer Si c'est le cas, je ne comprends pas la nécessité pour les autres utilisateurs de le lire... enfin... je me demandais juste... ]

4voto

user9517 Points 113163

Avant d'essayer, lisez jusqu'au bout, s'il vous plaît.

Vous pouvez faire ce que vous voulez faire en créant deux utilisateurs, en les plaçant dans le même groupe et en leur donnant le même répertoire personnel. Ensuite, créez le fichier ~/.ssh/authorized_keys dans le répertoire partagé avec les clés.

Les comptes doivent avoir un Shell donc les verrouiller en utilisant usermod -L LOGIN qui empêchera la connexion interactive.

Les permissions sur le répertoire ~/.ssh doivent être g:r-x et le répertoire ~/.ssh/authorized_keys doit être g:r--.

chmod g+rx ~/.ssh
chmod g+r ~/.ssh/authorized_keys

Cela cause ensuite des problèmes à sshd qui s'attend à ce que le répertoire soit au maximum g:r-- et le fichier g:--- vous obtenez le message d'erreur suivant

Authentication refused: bad ownership or modes for file /home/test/.ssh/authorized_keys

Pour que ce système fonctionne, vous devez maintenant casser les contrôles intégrés de sshd par l'édition /etc/sshd_config et la mise en place StrictModes no à partir de l'option par défaut StrictModes yes . Redémarrez sshd pour que les changements soient connus.

Cela devrait fonctionner comme vous le souhaitez. Malheureusement, vous avez retiré la sécurité de sshd et vous pourriez faire des changements à une date ultérieure qui laisseraient votre système grand ouvert.

Pour plus de sécurité, n'effectuez aucun des changements ci-dessus.

Créez 2 comptes utilisateurs dans le même groupe et configurez leurs ~/.ssh/authorised_keys. Créez un lien depuis chaque répertoire personnel vers l'endroit où vous voulez qu'ils placent leurs données.

ln -s -n /path/to/stuff content

Verrouillez les permissions sur le répertoire personnel pour empêcher les utilisateurs d'y écrire.

Empêcher les comptes de se connecter de manière interactive

usermod -L LOGIN

Changez les permissions sur le répertoire /path/to/stuff pour permettre l'accès du groupe.

1voto

BillThor Points 27096

Il semble que vous vouliez donner accès à un identifiant d'utilisateur qui agit comme une boîte de dépôt pour les fichiers. Vous pouvez restreindre ce que les utilisateurs peuvent faire dans le fichier des clés autorisées.

Comme vous souhaitez qu'ils se connectent uniquement à cet identifiant sur le serveur, vous pouvez leur fournir un fichier .ssh/config qui les relie directement à l'identifiant correct.

1voto

Cyber Points 87

La réponse à cette question - Comment puis-je créer un compte utilisateur qui n'autorise que les téléchargements via sftp ? - recommande un paquet appelé scponly - Je ne l'ai jamais utilisé, mais il semble qu'il pourrait faire ce que vous voulez.

0voto

sixtyfootersdude Points 7399

Vous pouvez avoir des problèmes avec sshd (et donc sftp) qui n'aime pas les permissions du fichier authorized_keys.

Vous pouvez peut-être vous en sortir en désactivant "StrictModes" dans sshd - mais je ne suis pas sûr pour l'instant des autres implications de ce paramètre ....

Citation : question 3.14 dans la FAQ d'openssh :-

Typiquement, ceci est causé par le fichier fichiers sur $HOME, $HOME/.ssh ou $HOME/.ssh/authorized_keys étant plus permissives que ce que sshd autorise par par défaut.

Dans ce cas, il peut être résolu en exécutant ce qui suit sur le serveur.

$ chmod go-w $HOME $HOME/.ssh $ chmod 600 $HOME/.ssh/authorized_keys $ chown whoami $HOME/.ssh/authorized_keys

Si cela n'est pas possible pour une raison quelconque raison, une alternative est de définir StrictModes no dans sshd_config. cette solution n'est pas recommandée.

J'espère que cela vous aidera.

0voto

DrummerB Points 743

L'inspection des fichiers journaux pourrait vous aider. Veuillez entrer les données suivantes après une connexion "infructueuse".

tail -n 50 /var/log/secure

et afficher le résultat

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