Comment configurer un utilisateur sftp pour se connecter avec un mot de passe à un serveur ubuntu EC2?

14

J'ai un serveur Ubuntu exécuté sur une instance EC2. Pour me connecter à ce serveur, j'utilise un fichier de certificat sans mot de passe.

J'ai installé et configuré vsftpd et créé un utilisateur (appelons-le "testuser") pour lequel j'ai défini un terminal / bin / false ssh pour qu'il ne puisse se connecter que via sftp et télécharger / accéder aux fichiers sur sa maison annuaire.

Cependant - lorsque j'essaie de me connecter au serveur à partir de mon ordinateur,

sftp testuser@my-ec2-server

Je reçois

Autorisation refusée (publickey).
Connexion fermée

messages, donc je ne peux pas me connecter.

Comment puis-je supprimer l'exigence de certificat pour cet utilisateur uniquement (ce qui signifie que l'utilisateur "ubuntu" devra toujours utiliser le fichier de certificat pour se connecter via ssh), afin que les clients sftp normaux puissent se connecter en utilisant un nom d'utilisateur et un mot de passe?

Je vous remercie.

PS Utilisation de Ubuntu Server 10.10 AMI officiel de canonique, 64 bits sur une micro-instance.

Doron
la source

Réponses:

10

Pour accomplir ce que vous souhaitez, vous devez faire deux choses différentes

  1. Changer la configuration sshd pour accepter les mots de passe

Je dirai tout d'abord que c'est une mauvaise idée de le faire, je préfère générer un certificat pour votre utilisateur plutôt que d'activer des mots de passe, néanmoins si vous voulez le faire, il vous suffit de le modifier /etc/ssh/sshd_configet de le modifier ou de le décommenter pour qu'il s'affiche PasswordAuthentication yes. Une fois cela fait, redémarrez sshdservice ssh restart

  1. Permettre aux utilisateurs de simplement FTP en utilisant sftp et de ne pas avoir de shell

Afin d'achever que vous devez installer rsh (shell restited) et changer le shell utilisateur chsh username

lynxman
la source
Je veux seulement que cet utilisateur spécifique (testuser) qui n'aura qu'un accès sftp, utilise un mot de passe au lieu d'un certificat. La partie de ne pas autoriser cet utilisateur à accéder via ssh, je l'ai déjà fait en définissant son type bash comme / bin / false
Doron
1
Doron, vous ne pourrez pas autoriser un seul utilisateur via passwd, vous autorisez l'authentification par mot de passe pour tout le monde ou pour personne. N'autorisera /bin/falsepas non plus les connexions sftp (toute connexion ssh a besoin d'un shell valide, c'est là que rsh fait l'affaire)
lynxman
1
Cela n'a pas fonctionné pour moi sur Ubuntu EC2, je ne sais pas quelle est l'étape supplémentaire qui me manque, le port 22 est ouvert
Doug Molineux
Voir serverfault.com/questions/154957/… pour configurer uniquement l'utilisateur sftp avec un mot de passe ...
Raman
-1

Voici un guide étape par étape pour permettre:

  1. Accès SFTP à / home / bob / uploads pour l'utilisateur bob
  2. Verrouiller Bob hors de SSH
  3. Utilisez un nom d'utilisateur / mots de passe plutôt que des clés:

Tout d'abord, modifiez votre fichier / etc / ssh / sshd_config:

sudo nano /etc/ssh/sshd

Faites défiler vers le bas et modifiez:

PasswordAuthentication yes

et ajoutez ceci en bas:

Match Group sftpusers
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no  

Appuyez sur Ctrl-X pour quitter et enregistrer.

Ajoutez maintenant l'utilisateur:

sudo useradd bob
sudo passwd bob

Ajoutez maintenant les groupes et désactivez ssh:

sudo groupadd sftpusers
sudo usermod  -g sftpusers bob
sudo usermod -s /usr/bin/rssh bob
sudo usermod -d /home/bob bob

Définissez maintenant les autorisations:

sudo chown root:root /home/bob/
sudo chmod 755 /home/bob/
sudo mkdir /home/bob/uploads
sudo chown bob /home/bob/uploads

sudo service sshd restart

Tout cela en étant connecté en tant qu'utilisateur root (utilisateur ec2 sur les AMI Amazon Linux)

Rob Mulder
la source
3
Pas besoin de laisser tomber votre pantalon pour permettre à un seul utilisateur d'utiliser l'authentification par mot de passe.
EEAA