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 cambiarla fácilmente a una autenticación basada en claves.
linux
scp
io-redirection
Argelbargel
fuente
fuente

Respuestas:
Puede escribirlo con una herramienta como esperar (también hay enlaces útiles, como Pexpect para Python).
fuente
Use sshpass :
o así la contraseña no se muestra en el historial de bash
Lo anterior copia el contenido de la ruta desde el host remoto a su local.
Instalar en pc :
apt install sshpassyum install sshpassport install sshpassbrew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rbfuente
apt-get install sshpassyum -y install sshpasssshpass -fpasswdfile` scp [...]. This way, the password won't show up inps`, etc., y puede proteger la contraseña con permisos de archivo.solo genera una clave ssh como:
copie el contenido
~/.ssh/id_rsa.puby, por último, agréguelo a las máquinas remotas~/.ssh/authorized_keysasegúrese de que la máquina remota tenga los permisos
0700 for ~./ssh foldery0600 for ~/.ssh/authorized_keysfuente
ssh-copy-id -i ~/.ssh/id_rsa.pub <remote_server>para copiar la clave en el servidor remotoSi se está conectando al servidor desde Windows, la versión Putty de scp ("pscp") le permite pasar la contraseña con el
-pwparámetro.Esto se menciona en la documentación aquí.
fuente
pscp -pw 'MyPa$$word' username@servername:/somedir/somefile ~/somedest(Odio usar masilla como esta, pero funciona)curl se puede usar como una alternativa a scp para copiar un archivo y admite una contraseña en la línea de comandos.
fuente
scptiene que esperar más de 30 segundos para permitirme ingresar una contraseña, perocurlfuncionó de inmediato.Puede usar el script 'esperar' en unix / terminal
Por ejemplo, crea 'test.exp':
ejecuta el script
Espero que eso ayude.
fuente
Aquí hay un ejemplo de cómo lo haces con la
expectherramienta:fuente
Nadie lo mencionó, pero Putty scp (pscp) tiene una opción -pw para contraseña.
La documentación se puede encontrar aquí: https://the.earth.li/~sgtatham/putty/0.67/htmldoc/Chapter5.html#pscp
fuente
Puede usar
ssh-copy-idpara agregar la clave ssh:Si existe:
fuente
Una vez que configure
ssh-keygencomo se explicó anteriormente, puede hacerscp -i ~/.ssh/id_rsa /local/path/to/file [email protected]:/path/in/remote/server/Si desea disminuir la escritura cada vez, puede modificar su
.bash_profilearchivo y ponerLuego desde tu terminal hazlo
source ~/.bash_profile. Luego, si escriberemote_scpen su terminal, debe ejecutar elscpcomando sin contraseña.fuente
asegúrese de tener la herramienta "esperar" antes, si no, hágalo
# apt-get install expectcree un archivo de script con el siguiente contenido. (# vi / root / scriptfile)
spawn scp /path_from/file_name user_name_here@to_host_name:/path_toexpect "password:"send put_password_here\n;interactejecutar el archivo de script con la herramienta "esperar"
# expect /root/scriptfilefuente
Aquí hay un ejemplo de Linux / Python / Expect de un hombre pobre basado en esta publicación de blog: Actualización de shells simples a TTY totalmente interactivos . Necesitaba esto para máquinas viejas donde no puedo instalar Expect o agregar módulos a Python.
Código:
Salida:
fuente
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 una plataforma Windows usando pageant y pscp.
fuente
Todas las soluciones mencionadas anteriormente pueden funcionar solo si la aplicación está instalada o si debe tener los derechos de administrador para instalar, excepto o sshpass.
Encontré este enlace muy útil para simplemente iniciar el scp en segundo plano.
https://charmyin.github.io/scp/2014/10/07/run-scp-in-background/
fuente
pasos para obtener sshpass para rhel / centos 6:
fuente: https://community.mapr.com/thread/9040
fuente
Encontré esta respuesta realmente útil aquí .
No solo puede pasar allí la contraseña, sino que también mostrará la barra de progreso al copiar. Realmente asombroso.
fuente