Necesito realizar una copia de seguridad de un servidor en mi computadora usando Duplicity:
duplicity /etc sftp://[email protected]//home/backup
Para poder hacer esto, necesito permitir el acceso sin contraseña haciendo lo siguiente:
$ ssh-keygen
$ ssh-copy-id [email protected]
$ ssh [email protected]
Mi pregunta es, ¿cómo puedo restringir el comando solo a esta transferencia SFTP en la clave pública que se genera?
command="restrict to sftp",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AAAA…
Y dado que estoy en una dirección IP dinámica, ¿cómo puedo superar el problema del "host desconocido perdido" cada vez que cambia mi IP?
ssh
sftp
key-authentication
account-restrictions
Desbordamiento de preguntas
fuente
fuente

Respuestas:
Hay 2 métodos para hacer esto.
1. - Restringir a través de sshd
Este método implica la creación de la función de SFTP dentro de su demonio SSH,
sshd. Esto se controla a través del/etc/ssh/sshd_configarchivo de configuración. NOTA: Esto restringirá al usuario,backuppara que solo se le permita SFTP en el servidor.2. - Restricción a través de claves_autorizadas
Este método no implica ningún cambio en el
sshd_configarchivo. Puede limitar un usuario + una tecla SSH a un solo comando a través de lacommand=función que ya ha mencionado en su pregunta. El truco está en qué comando incluyes. Puede colocar el servidor SFTP en estacommand=línea, lo que tiene el mismo efecto que configurar el servidor SFTP en susshd_configarchivo.NOTA: si el usuario tiene acceso de escritura
~/.ssh/authorized_keys, puede leerlo y / o modificarlo. Por ejemplo, podrían descargarlo, editarlo y volver a cargarlo, quitándolocommmand=...y otorgándole acceso ilimitado al comando, incluido el shell. Si el usuario tiene acceso de escritura~/.ssh, también podría simplemente desvincular y volver a crear el archivo, ochmodpara acceder a escritura. Existen muchas soluciones posibles, como~/.ssh/authorized_keysguardar los archivos en un lugar que el usuario no pueda escribir, como por ejemplo:Esto es más complicado pero se puede hacer usando la
from=función dentro delauthorized_keysarchivo también. Aquí estamos limitando el acceso de sólo el anfitrión,somehost.dyndns.org.Las configuraciones adicionales después de la
command=son igualmente importantes, ya que limitarán aún más el uso de la clave SSH.desglose de características
from='hostname1,hostname2,''- Restringe el acceso desde los patrones de IP o nombre de host especificadoscommand='command'- Ejecuta el comando especificado después de la autenticaciónno-pty- No asigna una pty (no permite inicio de sesión interactivo)no-port-forwarding- No permite el reenvío de puertosno-X11-forwarding- el usuario no podrá eliminar las GUI X11 de la pantallano-agent-forwarding- el usuario no podrá reenviar a través de este host a otros hosts internosPara deshacerse del mensaje sobre los "hosts conocidos faltantes", puede agregar esta opción SSH al cliente cuando se conecta así:
Consulte la página de manual
ssh_configpara obtener detalles completos sobre este interruptor.Restringiendo el shell del usuario
Para ambas soluciones anteriores, es probable que desee bloquear al
backupusuario limitando también el shell de este usuario en el/etc/passwdarchivo. Por lo general, querrá configurarloscponly, pero también hay otras opciones para esto. Vea estas preguntas y respuestas de U&L tituladas: " ¿Necesita un shell para SCP? " Para conocer las formas de hacerlo.El uso de
/sbin/nologintambién se puede usar si opta por usar la función chrootsshd_configcomo se describe en el # 1 anterior. Sin embargo, si opta por utilizar el método descrito en el n . ° 2 , es probable que tenga que usarscponlyu otra cosa para el shell del usuario/etc/passwd.BONIFICACIÓN - Extendiendo # 2 arriba
Si necesita exponer un conjunto de comandos para este usuario, también puede hacerlo. Crea un script así
/home/backup/commands.sh:Luego configura el
authorized_keysarchivo de esta manera:El
backupusuario puede ejecutar estos comandos así:Referencias
fuente
/sbin/nologinevitará que el servidor acceda a mi computadora con SFTP. Esto lo intenté.known_hostsarchivo ssh . Marki proporcionó la solución correcta en su comentario. Elfromparámetro en elauthorized_keysarchivo en mi equipo C sólo restringe la ubicación desde la que se puede conectar a S C/sbin/nologinfunciona si utilizo el comando force eninternal-sftplugar del/usr/libexec/openssh/sftp-serverque especificó en el certificado. Supongo que estos son dos subsistemas diferentes. Y crear un directorio chroot para el primero es mucho más sencillo.Shell restringido
Debe asignar un shell restringido como scponly o rssh.
Cuando usa scp o sftp, se está conectando al sitio remoto a través de ssh y luego el shell remoto ejecuta un proceso scp o un proceso sftp. Lo que necesita es un shell restringido que solo permita que scp o sftp bloqueen el inicio de sesión.
fuente