¿Cómo configuro un usuario sftp para iniciar sesión con una contraseña en un servidor ubuntu EC2?

14

Tengo un servidor Ubuntu ejecutándose en una instancia EC2. Para iniciar sesión en ese servidor, uso un archivo de certificado sin ninguna contraseña.

Instalé y configuré vsftpd y creé un usuario (llamémosle "usuario de prueba") para el que configuré un terminal / bin / false ssh para que solo pueda conectarse a través de sftp y cargar / acceder a archivos en su hogar directorio.

Sin embargo, cuando intento conectarme al servidor desde mi computadora, ejecuto

sftp testuser@my-ec2-server

yo obtengo

Permiso denegado (clave pública).
Conexión cerrada

mensajes, así que no puedo iniciar sesión.

¿Cómo puedo eliminar el requisito de certificado solo para este usuario (es decir, el usuario "ubuntu" aún tendrá que usar el archivo de certificado para iniciar sesión a través de ssh), de modo que los clientes normales de sftp puedan conectarse usando un nombre de usuario y una contraseña?

Gracias.

PS Usando Ubuntu Server 10.10 AMI oficial de canónico, 64 bits en una micro instancia.

Doron
fuente

Respuestas:

10

Para lograr lo que deseas, debes hacer dos cosas diferentes

  1. Cambiar la configuración de sshd para aceptar contraseñas

En primer lugar, diré que es una mala idea hacer esto, prefiero generar un certificado para su usuario que activar las contraseñas, sin embargo, si lo desea, simplemente edítelo /etc/ssh/sshd_configy cámbielo o descomente para que se muestre PasswordAuthentication yes. Una vez hecho esto, reinicie sshdservice ssh restart

  1. Permita que los usuarios solo usen FTP usando sftp y no tengan shell

Para lograr que necesita instalar rsh (shell restringido) y cambiar el shell del usuario chsh username

Lynxman
fuente
Solo quiero que este usuario específico (testuser) que solo tendrá acceso sftp, use una contraseña en lugar de un certificado. La parte de no permitir que ese usuario acceda a través de ssh, ya lo hice al definir su tipo bash como / bin / false
Doron
1
Doron, no podrás permitir solo un usuario a través de passwd, o permitirás la autenticación de contraseña para todos o para nadie. Tampoco /bin/falsepermitirá conexiones sftp (cualquier conexión ssh necesita un shell válido, ahí es donde rsh funciona)
lynxman
1
Esto no funcionó para mí en Ubuntu EC2, no estoy seguro de cuál es el paso adicional que me falta, el puerto 22 está abierto
Doug Molineux
Visite serverfault.com/questions/154957/… para configurar solo el usuario sftp con una contraseña ...
Raman
-1

Aquí hay una guía paso a paso para permitir:

  1. Acceso SFTP a / home / bob / uploads para el usuario bob
  2. Bloquear a Bob fuera de SSH
  3. Use nombre de usuario / contraseñas en lugar de claves:

Primero, edite su archivo / etc / ssh / sshd_config:

sudo nano /etc/ssh/sshd

Desplácese hacia abajo y modifique:

PasswordAuthentication yes

y agregue esto en la parte inferior:

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

Presione Ctrl-X para salir y guardar.

Ahora agregue el usuario:

sudo useradd bob
sudo passwd bob

Ahora agregue los grupos y deshabilite ssh:

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

Ahora establezca permisos:

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

Todo esto mientras está conectado como usuario root (usuario ec2 en AMI de Amazon Linux)

Rob Mulder
fuente
3
No es necesario soltarse los pantalones solo para permitir que un usuario use la autenticación de contraseña.
EEAA