Estoy trabajando en un proyecto para el que no tengo la cadena de herramientas configurada en mi propia máquina y, por lo tanto, estoy desarrollando de forma remota. Mi flujo de trabajo en este momento se ve como sigue:
- abrir el directorio del proyecto remoto en mi administrador de archivos usando sftp
- editar algunos archivos
correr
make remote
, que se conecta a la máquina remota a través de ssh y se ejecutamake
ahí:ssh $(HOST) cd $(DIRECTORY) \; make
correr
make get
, que transfiere el binario a través descp
:scp $(HOST):$(DIRECTORY)/build/$(FILE) .
prueba el binario y repite
El problema es que la máquina remota solo realiza la autenticación de contraseña, así que tengo que ingresar la contraseña dos veces en cada ciclo. No puedo construir y descargar en el mismo ssh
¿sesión?
Monte el lado remoto usando sshfs y trabaje 'localmente'. Después de ejecutar su marca remota, verá el resultado en su punto de montaje local sin copiarlo explícitamente.
fuente
Si bien es posible combinar las dos tareas remotas en dos sesiones, en este caso se puede usar el montaje sftp del sistema de archivos remoto. En lugar de usar
scp
, puedes usargvfs-move
paramake get
:ya que el soporte ya está establecido, es probable que sea más rápido que
scp
, incluso sin tener que introducir la contraseña.fuente
Puede inscribirse en su comando make para leer su contraseña en una variable, luego puede usar sshpass para hacer las dos conexiones.
Algo como:
fuente
Quiero que se acepte la respuesta de Roberto, pero aun así comparto lo que terminé haciendo:
En primer lugar, utilicé la sugerencia de Roberto para habilitar el intercambio de sesiones: en
.ssh/config
:Además, sí monte el sistema de archivos remoto usando
sshfs
(todo en el makefile):Para los objetivos de construcción reales:
Ya que
sshfs
mantiene una conexión ssh abierta, no necesito ingresar la contraseña en absoluto mientras trabajo, y no es necesario un manejo especial para el binario (por eso me salto elinstall
objetivo). La ventaja adicional de tener un punto de montaje plano es que puedo usar git como con cualquier proyecto ordinario.fuente