2009-04-10 17 views
8

Come posso convincere che id_dsa non è memorizzato in ~/.ssh quando ci si connette ad un particolare host.come ottenere ssh per utilizzare un diverso id_dsa

La domanda ovvia è perché. La risposta è che questa chiave è più sensibile e deve essere protetta da password mentre l'altra è utilizzata per l'automazione.

Anche se questo non è un problema di programmazione, non sarei sorpreso di apprendere che ciò richiede una soluzione di programmazione.

+0

L'unico motivo per cui questo argomento è legato alla programmazione è che molti strumenti SCM utilizzano ssh come parte del loro metodo di azione per funzionare, e gli strumenti SCM sono certamente correlati alla programmazione. –

risposta

6

Nella tua .ssh/config, impostare qualcosa di simile:

Host somehost 
    IdentityFile /path/to/extra_secret_key 

Ho un host che ha IdentityFile insieme a ~/.ssh/iddsa_aux, ma il parametro deve accettare qualsiasi percorso nome.

+0

Grande. Esattamente quello che stavo cercando e non riuscivo a trovare. Non crederesti quanto sono arrivato vicino a fare una seconda copia di ssh e modificarla con un hexeditor. – Joshua

2

Dalla pagina ssh man:

-i identity_file 
     Selects a file from which the identity (private key) for RSA or 
     DSA authentication is read. The default is ~/.ssh/identity for 
     protocol version 1, and ~/.ssh/id_rsa and ~/.ssh/id_dsa for pro- 
     tocol version 2. Identity files may also be specified on a per- 
     host basis in the configuration file. It is possible to have 
     multiple -i options (and multiple identities specified in config- 
     uration files). 
+0

Dannalo. Ho letto la pagina man e l'ho persa. – Joshua

12

C'è un trucco pratico che puoi usare per renderlo davvero facile, stranamente, ho appena discusso questo 30 minuti fa con un amico.

~/.ssh/config

 
IdentityFile ~/.ssh/ident/%[email protected]%h 
IdentityFile ~/.ssh/id_rsa 
IdentityFile ~/.ssh/id_dsa 

Questo rende molto facile da usare un modello di ripiego, come le opzioni sono gestiti attraverso la parte superiore verso il basso.

Poi per specificare una chiave specifica per "Bob @ somehost" non resta che creare il file

 
~/.ssh/ident/[email protected] 

E proverà che prima, quando la registrazione in tale host.

Se il file non può essere trovato, o il tasto viene rifiutato, tenterà il prossimo, in questo caso,

 
~/.ssh/id_rsa 

Il vantaggio di questa tecnica è che non è necessario aggiungere un nuovo voce ogni volta che aggiungi un altro host, tutto ciò che devi fare è creare il file chiave nel posto giusto e fa il resto automaticamente.

Problemi correlati