2013-02-04 10 views
7

Sto cercando di capire come interagiscono le configurazioni in .ssh/config e .git/config.Account github multipli: quali valori per Host in .ssh/config?

Ecco la situazione: ho due conti separati GitHub, diamo loro GH0 e GH1 chiamano, e voglio interagire con entrambe le "passwordlessly", vale a dire, usando le chiavi SSH in ~/.ssh/id_rsa.GH0.pub e ~/.ssh/id_rsa.GH1.pub. Al momento funziona per GH0 ma non per GH1. (Per esempio, push comandi ai GH1 morire con ERROR: Repository not found.\nfatal: The remote end hung unexpectedly.;. ssh -T [email protected] opere, ma solo perché collega GH0)

Ciò significa che per ognuno di questi account github devo avere una sezione corrispondente a ~/.ssh/config, specificando quale file chiave ssh usare per questo. (Ad esempio, la sezione per GH0 avrà qualcosa come IdentityFile ~/.ssh/id_rsa.GH0, ecc.)

La domanda è: che altro devo inserire in ciascuna di queste sezioni? Più in particolare,

cosa devo mettere come argomento alla parola Host in ~/.ssh/config?

Le informazioni che ho trovato finora su questo non hanno senso per me. In alcuni esempi, vedo cose come

Host github.com 
    Hostname github.com 
    User git 
    IdentityFile ~/.ssh/id_rsa 

Host ac2.github.com 
    Hostname github.com 
    User git 
    IdentityFile ~/.ssh/id_rsa_ac2 

Da dove viene questo "ac2". prefisso nel secondo Host venuto da ???

Dove trovo quelli corrispondenti per i miei account github?

alcune delle informazioni che ho trovato un conduttore di indovinare che gli argomenti alla parola Host sono infatti arbitraria, il che implica che la seguente sarebbe bene troppo

Host omgwtfbbq 
    Hostname github.com 
    User git 
    IdentityFile ~/.ssh/GH0 

Host 4.8.15.16.23.42 
    Hostname github.com 
    User git 
    IdentityFile ~/.ssh/GH1 

Ma se è così, questo solleva ancora un'altra domanda: In che modo git (o gitub) è possibile sapere quale di queste due sezioni utilizzare per un dato comando?

Anche in questo caso, mi immagino che questo sarebbe stato specificato nel file del progetto .git/config, sotto qualche [remote ...] sezione, ma come?

devo ricorrere a indovinare perché, per prima cosa, non sono stato in grado di trovare la documentazione per l'interpretazione delle coppie chiave-valore in .git/config. Il più vicino che ho trovato è la pagina man di git-config, ma non riesco a trovare alcuna documentazione in questa pagina per il campo url = ... in una sezione [remote ...]. Anche la pagina man per git-remote non ha documentazione su questo campo.

+0

Informazioni su ipotesi: cercare "remote. .url" nel manuale di configurazione di git. – patthoyts

+0

Fai un 'git remote aggiungi omgwtfbbq git @ omgwtfbbq: user/repo.git',' git pull omgwtfbbq master', e vedi se funziona ... –

+0

@HieryNomus: grazie! Si prega di inviare il tuo commento come risposta in modo da poterlo selezionare – kjo

risposta

5

procedere come segue:

$ git remote add omgwtfbbq [email protected]:user/repo.git 
$ git pull omgwtfbbq master 

Ciò utilizzare l'alias Host che hai definito nel tuo ~/.ssh/config come l'ospite git, e quindi utilizzerà l'IdentityFile hai setup.

1

Sì, la riga Host nel file .ssh/config è un alias. Lo si utilizza al posto di github.com e qualsiasi cosa che usi correttamente SSH leggerà il file e lo scambierà nel nome host reale, e userà anche il keyfile e il nome utente forniti, se forniti.