¿Por qué no puedo usar una key ssh en más de un repository github?

Tengo un server que debe configurarse con los contenidos de dos repositorys git que tengo en github. Ahora quiero agregar la key ssh del server como key de implementación para ambos proyectos en github.

Desafortunadamente recibo un error que dice que la Key is already in use , lo que según esta página de github se debe a que no puedo agregar una key de implementación a más de un repository.

Realmente me pregunto sin embargo; ¿Por qué es esto un problema? ¿Por qué un server no puede acceder a varios repositorys? ¿Cuál es el riesgo que están tratando de mitigar aquí?

Esa no es la caracterización correcta de lo que dice en la página de GitHub que vinculó. De hecho, puede usar la misma key ssh para muchos repositorys diferentes de GitHub. Lo que no puede hacer es usar una key ssh para muchos repositorys y como lo que ellos llaman una "key de deployment", ni usar la misma key ssh que otro usuario.

Lo que sucede aquí es que el server ssh de GitHub clasifica las keys entrantes en uno de dos types:

  • Una key de count , que autentica una connection entrante como usted . Luego tiene permissions en una amplia franja de repositorys, según lo controlan las configuraciones de "counts que tienen acceso" de cada repository. Es decir, la key en sí es cómo saben que eres kramer65 (o como sea que tu nombre de count esté realmente allí).
  • Una key de deployment , que autentica una connection entrante que tiene acceso a un repository particular . Es decir, no hay una "count" involucrada: es solo una key, adjunta a un repository específico.

También hay "usuarios de máquinas", pero esos son una forma de count; No estoy seguro de si GitHub incluso los distingue internamente de las keys de count normales. Debido a que estos son similares a las counts en lugar de implementarlos como keys, puede darles acceso a muchos repositorys diferentes. (Esto es probablemente lo que quieres)

Realmente me pregunto sin embargo; ¿Por qué es esto un problema? ¿Por qué un server no puede acceder a varios repositorys? ¿Cuál es el riesgo que están tratando de mitigar aquí?

En realidad, no están protegiendo nada aquí. Solo le permiten save, en GitHub, esta key adicional, y para (su) conveniencia, hágalo sin molestarse en crear una count. Por (su) conveniencia, luego conectan esta key adicional a exactamente un repository, lo que permite que su server ssh, o realmente, lo que está justo detrás de la key autentica, es decir, el "shell de inicio de session", busque el único repository permitido sin tener que indirectamente a través de una tabla de "count". Cuando la key entrante es una key de count (o usuario de máquina), su server ssh, o lo que está justo detrás de él, debe search en esta tabla secundaria, para encontrar el set de repositorys permitidos.

Consulte https://developer.github.com/guides/managing-deploy-keys/#deploy-keys para get más información.

(No existe un motivo teórico por el que no puedan permitir que una tecla de deployment cree automáticamente un "usuario de máquina" anónimo que luego se agrega automáticamente a cada repository o se elimina de él, como usted quisiera. Sin embargo, eso no les compra nada, ya que los usuarios de máquinas ya existen y realizan esta misma function. Pueden tratar de usarlo como una característica de security porque le permite saber "hey, esa key ya significa algo para mí" … pero si tiene esa key y no está Se supone que tienes esa key, ahora puedes descubrir qué es lo que esa key realmente desbloquea, que si algo es algo anti-security. Por otro lado, si se supone que tienes esa key, y simplemente has olvidado cuál de tus repositorys se desbloquea, eso hace que el sistema sea muy difícil para usted. Sin embargo, esto es típico de cualquier sistema de security: cuanto más seguro lo haga, más inconveniente es usarlo realmente).