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 sshpass
yum install sshpass
port install sshpass
brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb
fuente
apt-get install sshpass
yum -y install sshpass
sshpass -f
passwdfile` scp [...]. This way, the password won't show up in
ps`, etc., y puede proteger la contraseña con permisos de archivo.solo genera una clave ssh como:
copie el contenido
~/.ssh/id_rsa.pub
y, por último, 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
y0600 for ~/.ssh/authorized_keys
fuente
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
-pw
pará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
scp
tiene que esperar más de 30 segundos para permitirme ingresar una contraseña, perocurl
funcionó 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
expect
herramienta: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-id
para agregar la clave ssh:Si existe:
fuente
Una vez que configure
ssh-keygen
como 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_profile
archivo y ponerLuego desde tu terminal hazlo
source ~/.bash_profile
. Luego, si escriberemote_scp
en su terminal, debe ejecutar elscp
comando sin contraseña.fuente
asegúrese de tener la herramienta "esperar" antes, si no, hágalo
# apt-get install expect
cree 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
ejecutar el archivo de script con la herramienta "esperar"
# expect /root/scriptfile
fuente
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