Utilizzare una specifica chiave inoltrata da SSH-agent?

Diciamo che ho una chiave per Github, insieme ad altre chiavi. Ho aggiunto molte chiavi al mio agente ssh ( ssh-add -L restituisce un sacco di righe) nel mio computer di casa A. Nella mia .ssh/config ho impostato quale chiave da usare con quale host, per esempio

 ssh -T -vvv git@github.com 2>&1 | grep Offering 

  • Il login di chiave pubblica SSH non riesce senza motivo
  • Colbind tramite SSH e digitare automaticamente la password, senza utilizzare una chiave pubblica
  • OpenSSH come server SFTP: Trigger i cambiamenti riusciti e difettosi
  • Come aggiungere la chiave privata a SSH?
  • Imansible connettersi a un database remoto
  • Esxi file ssh configuration chnages per rendere non permanente e permananet
  •  debug1: Offering RSA public key: /Users/doxna/.ssh/id_rsa.github 

    Solo una chiave viene offerta, come previsto. Ma poi ssh-ing a qualche host B con ForwardAgent yes e ripetendo lo stesso command, ottengo

     debug1: Offering RSA public key: /Users/doxna/.ssh/id_rsa.linode2 debug1: Offering RSA public key: /Users/doxna/.ssh/id_rsa.helium debug1: Offering RSA public key: /Users/doxna/.ssh/id_rsa.github 

    il che significa che cerca tutte le mie chiavi. Questo è problematico poiché solo un numero limitato di chiavi può essere provato prima che i server restituiscano Too many authentication failures . Così ho provato a modificare .ssh/config sull'host B per includere

     Host github.com IdentityFile /Users/doxna/.ssh/id_rsa.github IdentitiesOnly yes 

    ma poi non ho più offerte chiave, ma piuttosto

     debug2: key: /Users/doxna/.ssh/id_rsa.github ((nil)) 

    che presumo significa che la chiave non è stata trovata (?) E dopo tutto, la chiave si trova al mio computer di casa A, non l'host B, quindi la domanda è come farne riferimento all'host B? Spero di riuscire a spiegare la domanda.

  • SSH: authorization negata (publickey, gssapi-with-mic, password)
  • ssh server config - input_userauth_request: utente non valido
  • 2 Solutions collect form web for “Utilizzare una specifica chiave inoltrata da SSH-agent?”

    Hai la giusta idea. L'unica parte che manca è che il file indicato da IdentityFile deve esistere. Non ha bisogno di contenere una chiave privata, solo la chiave pubblica disponibile è sufficiente.

    In host B è ansible estrarre la chiave pubblica dall'agente digitando ssh-add -L | grep /Users/doxna/.ssh/id_rsa.github > ~/.ssh/id_rsa.github.pub ssh-add -L | grep /Users/doxna/.ssh/id_rsa.github > ~/.ssh/id_rsa.github.pub e quindi puntare a quel file da ~/.ssh/config

    Bella risposta da @Kasperd, ma nota anche che se l'host B è compromesso o se non ti fidi di tutti quelli con privilegi di root, allora stai ancora esponendo tutte le tue chiavi per abusare finché sei stato registrato in su quel padrone.

    Quindi un approccio migliore potrebbe essere quello di inoltrare solo le chiavi necessarie. Forse provare ssh-agent-filter che si trova in debian / repository di Ubuntu, o da github .

    EDIT: Ho installato su ssh-ident piuttosto che ssh-agent-filter per spedire le chiavi selettivamente, anche se non è un'esperienza più semplice come si potrebbe sperare.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.