Transferencia de archivos de línea de comando SFTP con secuencias de comandos Mac OS X

Estoy trabajando con alguien que ha estado haciendo simulaciones en varias computadoras y enviando los resultados por FTP a un sitio web usando un script y el comando ftp básico de mac básicamente algo así como (esto no es exactamente lo que recuerdo de la última vez que lo miré)

ftp -i username@host password
cd /dir/
put file 1
put file 2
...

etcétera...

Necesito actualizar este proceso para usar SFTP con fines de seguridad, pero no hay forma de que pueda decir que coloque la contraseña en un script de una sola línea para el programa SFTP que está integrado en mac OS X. ¿Hay alguna otra manera de hacer esto? Intenté usar algo llamado LFTP que parecía conectarse al servidor, pero los archivos siempre permanecían en 0% cuando intentaban transferirse. Cualquier ayuda sería apreciada.

enséñele a usar la autenticación de clave pública. Funciona en una sola línea y es más seguro que la contraseña escrita en la línea de comandos en texto sin formato. O si realmente insiste en escribir la contraseña en la línea de comandos, hay una herramienta sshpass(ciertamente también para Mac), pero no puedo recomendarla.
Vi sshpass pero no pude entenderlo. Entiendo el concepto de autenticación de clave pública, pero no hago esto todos los días, así que necesito un poco más de dirección. Supongo que necesito generar una clave desde el propio servidor y proporcionársela al usuario, luego pueden conectarse simplemente usando el nombre de usuario y la clave los autenticará, ¿verdad? ¿Puede enviar algunos ejemplos de línea de comando específicos de cómo se vería asignar/crear la clave, así como cómo se vería en el lado del cliente para conectarse? Como dije, no hago estas cosas todos los días, así que ando dando vueltas mucho.
Otra solución sería obtener una copia de Transmit y configurar su función de sincronización de carpetas.

Respuestas (2)

Supongo que necesito generar una clave desde el propio servidor y proporcionársela al usuario, luego pueden conectarse simplemente usando el nombre de usuario y la clave los autenticará, ¿verdad?

No. Genere la clave en el cliente ( ssh-keygen) y cargue la clave pública en el servidor. Por ejemplo, usando ssh-copy-id, si sshestá permitido en el servidor. Hay muchos procedimientos en Internet, así que creo que podrá averiguarlo.

Entonces la conexión funcionaría como sftp username@host(sin contraseña). Si tiene algún lote, puede proporcionarlo para sftpusar -bla opción. Para obtener más información, consulte las páginas del manual de sftpu otras herramientas mencionadas anteriormente.

Pude generar una clave pública en una Mac que estoy usando para probar con la herramienta ssh-keygen, pero no estoy seguro de cómo poner la clave pública en mi servidor cygwin para poder iniciar sesión sin contraseña. Intenté usar ssh-copy-id pero decía que no se encontró el comando. Estoy buscando en la web lo que debería parecer una respuesta simple sobre esto, pero me quedo un poco en blanco.
Puede descargar reciente ssh-copy-id, si no está empaquetado en su Mac. Debería ser la forma más segura si conoce la contraseña.
Ok, creo que copié mi clave usando las instrucciones que encontré aquí commandlinefu.com/commands/view/188/… pero cuando trato de sftp a mi servidor, solo dice conexión cerrada. No estoy seguro de si hay algo más que deba hacer. ¿Tengo que hacer algo en el lado del servidor en este punto para decirle que acepte esa clave pública para acceder? Me parece extraño que el acceso pueda ser otorgado por un comando completamente del lado del cliente como ese.
Por supuesto, debe proporcionar una contraseña para ssh-copy-id. De todos modos, compruebe el registro de errores del servidor. Debería haber alguna nota de por qué falló la conexión.
Descargué ssh-copy-id usando brew pero cuando traté de ejecutarlo en el servidor me da lo siguiente: INFO:intentando iniciar sesión con nuevas claves, para filtrar las que ya están instaladas. /usr/local/bin/ssh-copy-id: ERROR Conexión cerrada por <dirección IP del servidor>
Genial, ahora solo tengo que descubrir cómo mirar los archivos de registro de sftp en cygwin... ¿Puedes decir que estoy fuera de mi alcance aquí: P.
Parece que falla incluso antes de la autenticación. Primero asegúrese de que puede autenticarse con contraseña. Puede ser problemático bajo cygwin. ¿Cómo instalaste el openssh allí? Hay una buena guía . También correr sshcon -vvvayuda a investigar lo que está pasando allí.
Sí, algo raro está pasando. Si uso uno de los nombres de usuario correctos para ssh o sftp, nunca se me solicita una contraseña, simplemente me expulsa. Sin embargo, si uso un nombre de usuario incorrecto, me solicita una contraseña. Lo extraño, por supuesto, es que puedo usar psftp muy bien desde una máquina con Windows, así como filezilla y puedo conectarme al servidor muy bien a través de SFTP. Siento que hay muchos objetivos en movimiento aquí y es difícil de precisar.
en realidad, ahora me gustaría enmendar eso... filezilla funciona bien desde una PC pero no desde una mac. Ahora estoy totalmente confundido... maldito Cygwin.
Ok, arreglé cygwin... Tuve que hacer algunas cosas de permisos y tal vez ese sigue siendo mi problema, pero puedo SFTP con éxito desde mi Mac usando Filezilla y desde la línea de comando, pero estoy tratando de hacer que la autenticación de clave pública funcione. Intenté usar ssh-copy-id, así como incluir mi archivo id_rsa.pub en el archivo .ssh/authorized_keys en mi servidor, pero sigo recibiendo un mensaje de permiso denegado después de ingresar mi contraseña. Intenté insertar manualmente el archivo en el archivo authorized_keys del propio servidor que funcionó, pero aún no puedo sftp desde la línea de comando sin usar una contraseña. ¿Ideas?
probablemente permisos. Aunque no estoy seguro de cómo manejar esto en el sistema de archivos de Windows. Pero el .sshdirectorio y authorized_keysno debería ser legible por nadie más. Puede intentar ejecutar el servidor en modo de depuración y debería decirle qué es lo que está mal.

Entonces, al final, nunca conseguí que la autenticación de clave pública funcionara y estoy seguro de que es algún tipo de problema de permisos porque cuando entro en el servidor mediante ssh/sftp, ni siquiera puedo acceder al directorio .ssh sin un error de permisos de cygwin. Como no pude averiguar cómo solucionar esto, pero al menos pude obtener permisos que funcionaran lo suficiente como para poder sftp/ssh con éxito desde mi mac, terminé instalando LFTP que me permitió usar un script que incluía la contraseña. No fue bonito, pero lo hice funcionar. Gracias por la ayuda de todos en esto. Al final, parece que la mayor parte de mi problema estaba relacionado con cygwin.