Estoy creando un pequeño script de respaldo usando sshfs
:
sshfs backup_user@target_ip:/home /mnt/backup
¿Hay alguna manera de incluir la contraseña en este comando?
¿O hay otra solución de transferencia de archivos donde se puede incluir la contraseña de inicio de sesión además de FTP / SFTP?
Respuestas:
-o password_stdin
no parece estar funcionando en todos los sistemas, por ejemplo, freeBSD. etc.También puede usar el
expect
intérprete, debería funcionar con sshfs y debería funcionar.Otra solución sería
sshpass
, por ejemplo, digamos que está haciendo una copia de seguridad del directorio / var / wwwRespaldando:
cargar el archivo de respaldo al servidor de respaldo
Por lo tanto, cargará el directorio con la copia de seguridad de hoy.
Sin embargo, como se dijo más arriba, la mejor manera (segura y simple) sería usar el par de claves ssh.
El único inconveniente sería que debe pasar por el proceso de generación de claves una vez en cada servidor necesita emparejar, pero es mejor que mantener una contraseña en formato de texto sin formato en todos los servidores de los que desea hacer una copia de seguridad :),
generando un par de claves de la manera correcta
En servidor local
En servidor remoto
Carga de claves públicas generadas al servidor remoto
Establecer permisos en el servidor remoto
Iniciar sesión
Habilitar el protocolo SSH v2
habilitar la autorización de clave pública en sshd
Si StrictModes se establece en yes en / etc / ssh / sshd_config, entonces
fuente
Según el manual, existe una opción
-o password_stdin
que podría permitir leer la contraseña desde la entrada estándar, que probablemente puede ser una redirección. Nunca lo he usado, así que estoy especulando.Dicho esto, desaconsejo encarecidamente una solución que sea inherentemente insegura.
ssh
funciona muy bien con un sistema de claves privadas / públicas. Es simple y seguro. No es necesario ingresar una contraseña o escribirla de forma clara en un script de shell. Simplemente presione su clave pública en el servidor y podrá conectarse de inmediato.fuente
printf "my_password\n" | sshfs username@hostname:/remote_fs $HOME/local_dir
-o password_stdin
opción.printf "my_password\n" | sshfs -o password_stdin user@hostname:/ $HOME/local_dir
PD Estoy en Debian Buster PPS Esto funciona, pero me pide una contraseña:sshfs -o password_stdin user@hostname:/ $HOME/local_dir
Tubería
"sshfs password"
con<<<
con-o password_stdin
funciona en bash:fuente
La opción "-o password_stdin" es lo que le permite canalizar su contraseña.
Dicho esto, las claves son una mejor opción, a menos que su proveedor de servicios no le permita usarlas para sftp. (Esta es una de las fallas notables de WP Engine).
fuente
Montar script:
Desmontar:
fuente
Una cosa a tener en cuenta es que si está utilizando la
-o password_stdin
opción, puede parecer que no funciona porque sshfs le preguntará si debe conectarse al host o no (si es la primera vez que se conecta y no se agrega al archivo de hosts conocidos todavía). Si lo está ejecutando en un lote, nunca verá sshfs preguntando. Las soluciones para evitar esto son:-o StrictHostKeyChecking=no
opción a sshfs ofuente
Script automático para conectar sftp con sshfs
fuente