Pregunta

En primer lugar, soy muy consciente de que hay muchos de preguntas relacionadas con este tema. Los he leído, pero todavía podía averiguar una respuesta adecuada para mi situación.

Me gustaría scp toda la dir ~/cs###/assign1 desde el local al directorio personal de la escuela con un script de shell. Mi pregunta es, ¿hay alguna manera en mi script que esperar a que la solicitud de contraseña, y luego simular el evento clave a bordo de 'tipo' en mi contraseña?


aquí es una guía muy detallada de cómo configurar la tecla

¿Fue útil?

Solución

No se le permite claves ssh? Eso sería una solución mejor.

Otros consejos

Utilice "sshpass"!

#!/bin/bash
sshpass -p "password" scp -r /some/local/path user@example.com:/some/remote/path

No creo que se puede hacer fácilmente que. Lo que puede hacer es mediante la autenticación de clave pública en su lugar.

Algo a lo largo de estas líneas

ssh-keygen -t rsa
ssh school mkdir .ssh/
cat ~/.ssh/id_rsa.pub | ssh school "cat >>.ssh/authorized_keys"

(o dsa).

Pero bueno, no es ServerFault, ¿verdad? ; -)

Considere el uso de llaves o una biblioteca externa.

No creo que sea posible de otro modo (espero que no me equivoco), ya que impone automática de intrusos fuerza bruta y la inhalación de contraseñas.

Hay bibliotecas que pueden hacer lo que quiere (utiliza el protocolo SFTP, SCP no llamar), como libssh .

Una vez más, le recomiendo claves.

Estoy de acuerdo que se debe utilizar llaves. Pero esperan puede automatizar el aspecto interactivo del proceso si desea codificar su contraseña en una secuencia de comandos de texto sin formato archivo.

Si se puede montar el directorio desde una máquina Windows (por ejemplo, a través de AFS, NFS o SMB de Windows, que los laboratorios universitarios de mi todos lo hicieron), puede utilizar pscp con el interruptor -pw.

¿Por qué no usar la opción "-r" para copiarlo de forma recursiva? O utilizar rsync en su lugar?

También es posible usar la autenticación de clave pública, que no necesita ayuda en su final, siempre y cuando tenga una cuenta de usuario real. Ver este

Usted no dice la plataforma que esté utilizando en el hogar y en la escuela. Suponiendo Linux, Cygwin u OS / X tiene varias opciones:

  1. autenticación de clave pública si no ha sido desactivado en el servidor
  2. ssh-agent y ssh-add que introducir su contraseña una vez por sesión

Para la opción (1), que lo haría

  1. generar un par de claves en casa usando ssh-keygen, sin frase de contraseña en la clave privada. Tenga en cuenta que la omisión de una frase de contraseña no es probablemente una buena idea si otras personas utilizan el mismo equipo, pero su objetivo era conseguir alrededor de tener que escribir la contraseña.
  2. subir la clave pública a la escuela cuenta y colocarlo en ~ / .ssh / authorized_keys
  3. Uso SCP con el "-i identityfile" opción, donde es la identityfile ruta completa de la clave privada. O bien, añadir una entrada a .ssh / config (ver las páginas man)

Para la segunda opción, ssh-agent permite almacenar en caché la contraseña en un local de proceso una vez por sesión. Se establece un tiempo de expiración

Como muchos ya han dicho que el uso de claves ssh sería la forma más segura y mejor. Si alguien más puede tener duda alrededor y en busca de ayuda, ayuda en Ubuntu hay un rápido y sencillo manera de usar las claves ssh.

Una vez que configure ssh-keygen como se explica aquí , puede hacerlo

scp -i ~/.ssh/id_rsa /local/path/to/file remote@ip.com:/path/in/remote/server/

donde id_rsa es la clave local generada en la configuración ssh-keygen.

Si desea disminuir escribir cada momento, puede modificar el archivo .bash_profile y poner

alias remote_scp='scp -i ~/.ssh/id_rsa /local/path/to/file remote@ip.com:/path/in/remote/server/

Luego de su terminal de hacer source ~/.bash_profile. Posteriormente si escribe remote_scp en su terminal debe ejecutar el comando scp sin contraseña.

he encontrado ninguna manera de hacer esto en nuestros sistemas de forma automática - Me SSH en un solo dispositivo, y luego SSH al dispositivo siguiente, y en tanto, no puedo instalar ningún otro software. Lo que sólo puede utilizar comandos shell scripts existentes. Puedo copiar o bien todos los archivos de un tipo con, como * .png, o de uno en uno en mi archivo de script, tener que introducir la contraseña para cada archivo individual. La única cosa que yo he aportado útil era que escriba la contraseña en un archivo, se corta, y ser capaz de pegar a cada pregunta para cada archivo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top