Configuración de claves SSH para el acceso de repositorio privado de github en Elastic Beanstalk

Mi proyecto Node.JS contiene referencias a repositorios privados de NPM alojados en github. Esto funciona bien localmente, pero estoy luchando para que esto funcione en Elastic Beanstalk.

dependencies: {
  ...
  "express": "^4.12.4",
  "jsonwebtoken": "^5.0.5",
  "my-private-module": "[email protected]:<my-user>/<my-repo>.git#<my-version>",
  ...
}

-

Lo que necesito es poder configurar una configuración SSH que funcione para git en mis instancias de Elastic Beanstalk, sin tener que almacenar claves secretas, etc. en el control de código fuente.

Obviamente, las instancias EB no tienen las claves SSH necesarias para acceder a mis repositorios privados de github. Si uso URL de git de estilo HTTPS conusername:[email protected] en línea, funciona bien. También funciona usando elmétodo de token oauth ofrecido por github (que es esencialmente un usuario: pass). Pero no quiero que se verifiquen las credenciales en el control de fuente, por lo que estoy tratando de hacer que la clonación de github funcione a través de SSH en mis instancias de EB.

He intentado un millón de formas, incluidasnpm preinstall guiones de acuerdo aesta entrada de blog, que solía funcionar hasta npm2, donde se realizó un cambio antes de la instalación para ejecutarse después de que se construye el árbol, y el RP para solucionar ese problema aún está pendiente.

He intentado un.ebextensions configuración de comandos que intenta llamargit config colocar uninsteadof en [email protected] en una URL HTTPS con un token OAUTH proveniente de una variable de entorno (complicado en sí mismo ya que las variables env no están configuradas en este momento en el ciclo de inicio, y la falta de $ HOME confunde git config).

También he probado varias formas diferentes usando.ebextensions configurar SSH en mis instancias EB, incluyendoesta solución de los comentarios en la publicación de blog mencionada. Esto es básicamente donde estoy atrapado ahora.

Creé con éxito un par de claves, lo configuré en mi perfil de github y verifiqué que la clave privada es utilizable desde mi cliente local para clonar mi repositorioHe puesto mi clave privada y un archivo de configuración ssh en un cubo S3 privadoHe creado un.ebextensions files configuración que copia estos dos archivos de mi cubo S3 en/tmp/.ssh/, de acuerdo aeste ejemploHe creado una depuracióncommands .ebextensions configuración que enumera /tmp/.ssh y muestra que los archivos se descargaron de S3 con éxito:

/tmp/.ssh/config contiene:

Host github.com
    IdentityFile /tmp/.ssh/deploy_key
    IdentitiesOnly yes
    UserKnownHostsFile=/dev/null
    StrictHostKeyChecking no

/tmp/.ssh/deploy_key contiene mi clave privada que se verifica que funciona localmente.

Sin embargo, git todavía arroja un error:

npm ERR! Command failed: git clone --template=/tmp/.npm/_git-remotes/_templates --mirror ssh://[email protected]/[.....]
npm ERR! Cloning into bare repository '/tmp/.npm/_git-remotes/git-ssh-git-github-com-[...]
npm ERR! Host key verification failed.
npm ERR! fatal: Could not read from remote repository.
npm ERR! 
npm ERR! Please make sure you have the correct access rights
npm ERR! and the repository exists.

Ahora me estoy quedando sin ideas. Mi mejor suposición sería que /tmp/.ssh no es la ruta donde git busca el archivo de configuración ssh; podría haber sido cuando se propuso la solución vinculada, pero podría haber cambiado en AMI posteriores: etc. El entorno utilizado cuando EB se inicia parece ser un poco limitado; los comandos se ejecutan como usuarionodejs pero / tmp parece usarse como el directorio de inicio, aunque $ HOME no está configurado en ningún lado.

¿Cómo puedo obtener git para recoger mi configuración SSH y, en consecuencia, usar mi clave SSH? ¿Cómo puedo averiguar dónde git busca un archivo de configuración SSH? Normalmente está en ~ / .ssh, pero como $ HOME no está configurado, bueno ... Esto debería ser fácil pero me está volviendo loco.

Respuestas a la pregunta(1)

Su respuesta a la pregunta