40 votos

¿Cómo pasar contraseña al comando scp utilizado en script bash?

Posibles Duplicados:
Conectar a través de SSH y escriba la contraseña de forma automática, sin necesidad de utilizar una clave pública

Tengo un script en bash que hace de volcado de DB, a continuación, copia de archivos de un servidor a otro, sino que siempre pide la contraseña antes de la conexión.

scp file.tar.gz root@xxx.xxx.xxx.194:/backup

Es allí una manera de pasar la contraseña directamente en el script ?

41voto

katit Puntos 130

En lugar de utilizar root crea una cuenta para este trabajo. Utilizar las claves públicas sin una contraseña en lugar de contraseñas.

scp -i /home/backupuser/.ssh/id_rsa backupuser@xxx.xxx.xxx.194:/backup

Mediante el uso de una cuenta especial para la copia de seguridad en el sistema de destino no están exponiendo su contraseña de root.

3voto

Journeyman Geek Puntos 3396

pscp permite pasar la contraseña directamente usando la opción-pw argumento. Alternativamente, y esta es una mejor idea, el uso de ssh agente y configurar la clave de inicio de sesión - esto es más seguro. Hay un howto sobre la configuración de ssh para utilizar la clave de inicio de sesión aquí

Usted puede utilizar el de comandos para enviar un sí para el programa.

3voto

cjc Puntos 17092

Es mejor configurar ssh para utilizar la clave de autenticación basados en lugar de tratar de averiguar cómo enviar mensajes de texto para el proceso de inicio de sesión con algo como expect.

Echa un vistazo a:

https://help.ubuntu.com/community/SSH/OpenSSH/Keys

Así que, básicamente, ejecute ssh-keygen -t dsa en la máquina que ejecuta el script. Cuando se le pide una contraseña, pulse ENTER para aceptar un espacio en blanco. Se obtienen dos archivos. Si has seguido el defecto sugerencias, los archivos se ~/.ssh/id_dsa y ~/.ssh/id_dsa.pub. La primera es la de la clave privada. La segunda es la clave pública.

Copia de la clave pública al segundo servidor usando ssh-copy-id user@server2. Esto añade la clave pública al archivo authorized_keys del usuario en el servidor2.

Ahora debería ser capaz de ejecutar ssh desde la primera máquina de registro y sin contraseña.

Para copiar los archivos, scp o rsync están bien. Depende de lo que estás haciendo. rsync va a utilizar ssh por defecto, por lo que hará uso de la clave de autenticación basada en que acaba de configurar.

2voto

Coding With Style Puntos 752

Utilice la herramienta sshpass

sshpass -p 'password' scp file.tar.gz root@xxx.xxx.xxx.194:/backup 

1voto

Andy Puntos 4237

scp utiliza SSH a túnel a un servidor remoto y transferencia de archivos. SSH puede autenticar a los usuarios con una contraseña, SSH clave o ambos (recomendado).

Para transferir archivos sin contraseña, crear un SSH clave para el usuario que va a utilizar (de la root es no recomendable, el uso de un usuario sin privilegios en su lugar y tener un trabajo en el servidor de destino como root para realizar el privilegio de la acción).

Entonces usted necesita para configurar el sistema de destino del SSH demonio para que acepte SSH conexiones clave (también en el enlace de arriba).

Tenga en cuenta que comprometían SSH claves sin contraseña son los mismos como en peligro de contraseñas - nadie puede entrar. Para los usuarios reales, es mejor el doble de la de seguridad y requieren de la clave y una contraseña.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: