password example con comando linux batch-file io-redirection

example - comando scp linux



¿Cómo pasar la contraseña a scp? (14)

Sé que no se recomienda, pero ¿es posible pasar la contraseña del usuario a scp?

Me gustaría copiar un archivo a través de scp como parte de un trabajo por lotes y, por supuesto, el servidor receptor necesita una contraseña y, no, no puedo cambiarlo fácilmente a la autenticación basada en claves.


  1. asegúrate de tener la herramienta "expectativa" antes, si no, hazlo

    # apt-get install expect

  2. Crea un archivo de script con el siguiente contenido. (# vi / root / scriptfile)

    spawn scp /path_from/file_name user_name_here@to_host_name:/path_to

    expect "password:"

    send put_password_here/n;

    interact

  3. ejecutar el archivo de script con la herramienta "esperar"

    # expect /root/scriptfile


Aquí hay un ejemplo de cómo lo haces con la herramienta expect :

sub copyover { $scp=Expect->spawn("/usr/bin/scp ${srcpath}/$file $who:${destpath} +/$file"); $scp->expect(30,"ssword: ") || die "Never got password prompt from + $dest:$!/n"; print $scp ''password'' . "/n"; $scp->expect(30,"-re",''$/s'') || die "Never got prompt from parent +system:$!/n"; $scp->soft_close(); return; }


He encontrado esta respuesta realmente útil here .

rsync -r -v --progress -e ssh user@remote-system:/address/to/remote/file /home/user/

No solo puede pasar allí la contraseña, sino que también mostrará la barra de progreso al copiar. Realmente asombroso.



Puede escribirlo con una herramienta como expect (también hay enlaces útiles, como Pexpect para Python).


Puede usar ssh-copy-id para agregar la clave ssh:

$which ssh-copy-id #check whether it exists

Si existe:

ssh-copy-id "user@remote-system"


Puede usar el script ''expect'' en unix / terminal

Por ejemplo crear ''test.exp'':

#!/usr/bin/expect spawn scp /usr/bin/file.txt root@<ServerLocation>:/home set pass "Your_Password" expect { password: {send "$pass/r"; exp_continue} }

ejecuta el script

expect test.exp

Espero que eso ayude.



Una alternativa sería agregar la mitad pública de la clave del usuario al archivo de claves autorizadas en el sistema de destino. En el sistema desde el que está iniciando la transferencia, puede ejecutar un demonio ssh-agent y agregar la mitad privada de la clave al agente. El trabajo por lotes se puede configurar para usar el agente para obtener la clave privada, en lugar de solicitar la contraseña de la clave.

Esto debería ser posible en un sistema UNIX / Linux o en la plataforma de Windows usando pageant y pscp.


Una vez que configura ssh-keygen como se explicó anteriormente, puede hacer

scp -i ~/.ssh/id_rsa /local/path/to/file [email protected]:/path/in/remote/server/

Si desea disminuir la escritura cada vez, puede modificar su archivo .bash_profile y poner

alias remote_scp=''scp -i ~/.ssh/id_rsa /local/path/to/file [email protected]:/path/in/remote/server/

Entonces desde su terminal haga source ~/.bash_profile . Luego, si escribe remote_scp en su terminal, debe ejecutar el comando scp sin contraseña.


Utilice sshpass :

sshpass -p "password" scp -r [email protected]:/some/remote/path /some/local/path

o así la contraseña no se muestra en el historial de bash

sshpass -f "/path/to/passwordfile" scp -r [email protected]:/some/remote/path /some/local/path

Lo anterior copia el contenido de la ruta desde el host remoto a su local.

Instalar:

  • ubuntu / debian
    • apt install sshpass
  • centos / fedora
    • yum install sshpass
  • mac w / macports
    • port install sshpass
  • mac w / brew
    • brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master‌​/Library/Formula/ssh‌​pass.rb

curl se puede usar como una alternativa a scp para copiar un archivo y admite una contraseña en la línea de comandos.

curl --insecure --user username:password -T /path/to/sourcefile sftp://desthost/path/


pasos para obtener sshpass para rhel / centos 6:

# wget http://epel.mirror.net.in/epel/6/i386/epel-release-6-8.noarch.rpm # rpm -ivh epel-release-6-8.noarch.rpm # yum install sshpass

fuente: https://community.mapr.com/thread/9040


solo genera una clave ssh como:

ssh-keygen -t rsa -C "[email protected]"

copie el contenido de ~/.ssh/id_rsa.pub y finalmente agréguelo a las máquinas remotas ~/.ssh/authorized_keys

asegúrese de que la máquina remota tenga los permisos 0700 for ~./ssh folder y 0600 for ~/.ssh/authorized_keys