Problema: ho circa 20-30 ssh-agent
identità. La maggior parte dei server rifiuta l'autenticazione Too many failed authentications
, poiché SSH di solito non mi consente di provare 20 chiavi diverse per accedere.
Al momento, sto specificando manualmente il file di identità per ogni host, usando IdentityFile
la IdentitiesOnly
direttiva e, in modo che SSH proverà solo un file chiave, che funziona.
Sfortunatamente, questo smette di funzionare non appena le chiavi originali non sono più disponibili. ssh-add -l
mi mostra i percorsi corretti per ogni file chiave e corrispondono ai percorsi in .ssh/config
, ma non funziona. Apparentemente, SSH seleziona l'indentità con la firma della chiave pubblica e non con il nome del file, il che significa che i file originali devono essere disponibili in modo che SSH possa estrarre la chiave pubblica.
Ci sono due problemi con questo:
- smette di funzionare non appena scollego il flash drive tenendo i tasti
- rende inutile l'inoltro dell'agente poiché i file chiave non sono disponibili sull'host remoto
Certo, potrei estrarre le chiavi pubbliche dai miei file di identità e memorizzarle sul mio computer e su ogni computer remoto a cui di solito accedo. Tuttavia, questa non sembra una soluzione desiderabile.
Ciò di cui ho bisogno è la possibilità di selezionare un'identità da ssh-agent in base al nome del file, in modo che io possa facilmente selezionare la chiave giusta usando .ssh/config
o passando -i /path/to/original/key
, anche su un host remoto in cui ho SSH. Sarebbe ancora meglio se potessi "soprannome" le chiavi in modo da non dover nemmeno specificare il percorso completo.
authorized_keys
file che, a seconda della chiave utilizzata, esegue diversi comandi, senza mai consentire l'accesso diretto alla shell.