Configurer sftp pour utiliser le mot de passe mais ssh pour ne pas utiliser le mot de passe

15

Est-il possible de configurer un utilisateur sur ubuntu avec openssh pour que ssh n'utilise pas l'authentification par mot de passe mais sftp le fait?

Je suppose que si je change /etc/ssh/ssh_configpour avoir PasswordAuthentication yescette possibilité, les utilisateurs peuvent utiliser des mots de passe pour se connecter avec ssh et sftp.

Edit: Mon but ici est de laisser certains utilisateurs sftp avec un mot de passe au lieu d'un fichier clé. Mais je ne veux pas que les utilisateurs de ssh puissent se connecter avec un mot de passe, je veux qu'ils doivent utiliser un fichier de clés. Si cela aide, je n'ai pas besoin que les utilisateurs sftp puissent se connecter, ils ont seulement besoin de faire sftp.

Dar
la source

Réponses:

26

Si je comprends bien, vous avez (au moins pour ce problème particulier) deux groupes d'utilisateurs distincts , l'un pouvant se connecter via SSH et obtenir un shell interactif (appelons le groupe ssh) et l'autre pouvant se connecter via SFTP et obtenir uniquement un SFTP shell (appelons le groupe sftp).

Maintenant, créez les groupes sshet sftpsur votre système avec groupadd, mettez les utilisateurs respectifs dans les groupes ( gpasswd -a $USERNAME $GROUPNAME) et ajoutez les lignes suivantes à la fin ( c'est important! ) De votre sshd_configsitué à /etc/ssh/sshd_config:

Match Group sftp
  PasswordAuthentication yes
  # Further directives for users in the "sftp" group

Match Group ssh
  PasswordAuthentication no
  # Further directives for users in the "ssh" group

Lisez à propos de la Matchdirective dans sshd_config (5) et sur les modèles autorisés dans ssh_config (5) .

Vous devrez également redémarrer le sshprocessus pour que cela prenne effet:

sudo /etc/init.d/ssh restart

joschi
la source
6
Ce n'est pas bien documenté, mais une seule directive Match sera utilisée; vous devez mettre la directive la plus spécifique en haut. Si vous répertoriez d'abord sftp, un utilisateur appartenant aux deux groupes sera autorisé à utiliser PasswordAuthentication.
Tobu
Merci! Il y a déjà un sshgroupe sur mes boîtes ubuntu, donc je n'ai vraiment besoin que d'ajouter sftpet de mettre les utilisateurs sftp dans ce groupe. Je vais combiner votre réponse avec l'utilisation scponlypour empêcher les utilisateurs sftp de se connecter.
dar
2
S'il PasswordAuthenticationest prévu de noprogresser, cela fonctionnera-t-il toujours? La Match Groupremplace- t- elle pour les utilisateurs sftp? Parce que c'est ce que j'ai et ça ne marche pas. Je peux ssh avec la clé, mais pas en tant qu'utilisateur sftp.
alphadogg
0

Non, et je ne vois pas comment cela améliorerait la sécurité, alors à quoi bon?

authorized_keys peut autoriser différentes commandes pour différentes clés, si c'est ce que vous recherchez. Sinon, vous avez la possibilité de créer plusieurs comptes et d'utiliser acls ou sudo.

Tobu
la source
Je n'essaye pas d'améliorer la sécurité. J'essaie de rendre plus facile pour certains utilisateurs d'utiliser un mot de passe au lieu d'un fichier de clés pour l'accès sftp. Cependant, je ne veux pas que quiconque utilise un mot de passe pour l'accès ssh.
dar
@dar OK; différents comptes alors. S'il s'agissait du même compte, une personne connaissant le mot de passe sftp pourrait écraser un fichier de profil (.ssh / rc, .profile, .bashrc…) et obtenir les mêmes privilèges qu'une personne connaissant la clé privée.
Tobu
0

Prendre un coup dans le noir ici, mais vous pouvez trouver ce fil intéressant.

Est-il juste d'emprisonner mes utilisateurs SFTP dans leur répertoire personnel?

Tyler K
la source
Je n'y vois rien à propos de PasswordAuthentication, corrigez-moi si je me trompe.
dar
Non, tu as raison. Ce que vous vouliez faire avec SFTP vs SSH n'était pas clair. Je vois dans l'autre commentaire que vous voulez que les utilisateurs utilisent un mot de passe pour SFTP mais pas pour SSH. Pourquoi?
Tyler K
Parce que ces utilisateurs qui ont besoin d'utiliser sftp trouvent les fichiers clés difficiles, mais ils savent comment taper des mots de passe. Cela se résume à un problème d'expérience utilisateur pour sftp. Mais je veux minimiser la surface d'attaque en gardant les mots de passe hors du mélange ssh.
dar
SFTP fonctionne en ouvrant d'abord un tunnel ssh, puis en transmettant des fichiers via FTP. Vous ne pouvez pas vraiment divorcer les deux. Je suppose que vous pourriez le faire en configurant des listes de contrôle d'accès, mais cela n'a pas vraiment de sens.
Tyler K