Configurazione SSH: stesso host ma chiavi e nomi utente diversi


31

Ho configurato due account GitHub, ma non riesco a far funzionare correttamente le chiavi ssh. Ho provato varie configurazioni.


Host github_username1
    HostName github.com
    IdentityFile ~/.ssh/rsa_1
    User username1
Host github_username2
    HostName github.com
    IdentityFile ~/.ssh/rsa_2
    User username2

git push:

Permission denied (publickey).
fatal: The remote end hung up unexpectedly

Funziona per username1:

Host github.com
    HostName github.com
    IdentityFile ~/.ssh/rsa_1
    User username1
Host github.com
    HostName github.com
    IdentityFile ~/.ssh/rsa_2
    User username2

git push nel repository username2:

ERROR: Permission to username2/repo.git denied to username1.
fatal: The remote end hung up unexpectedly

Ho anche provato git pushcon entrambi IdentityFilee le Userimpostazioni sotto lo stesso Host. L'output è lo stesso dell'ultima configurazione.

Penso che git cerchi automaticamente l'host "github.com" perché il telecomando è tale. Si dice che Host possa essere quello che vuoi ( /programming//a/3828682 ). C'è un modo per cambiare quale Host da ssh config dovrebbe usare un repository specifico?

Sarebbe l'ideale se potessi risolverlo solo da ~ / .ssh / config.

Risposte:


44

Il client OpenSSH utilizza solo la Hostlinea come identificatore di sezione e tutto il resto sono impostazioni. Se ci si connette foo@bar.com, SSH non cercherà " User foo"; cercherà solo " Host bar.com".

In altre parole: se hai " Host github_username2" nella tua configurazione SSH, allora devi usare lo stesso host nei telecomandi Git - github_username2no git@github.com.

Tuttavia, questo non è ciò che causa errori di autenticazione. Nel caso di github.com, il nome utentegit SSH deve essere " " . I server SSH GitHub identificano gli utenti solo con la loro chiave SSH.


Una corretta configurazione SSH sarebbe:

Host github_username1
    Hostname github.com
    User git
    IdentityFile ~/.ssh/rsa_1
Host github_username2
    Hostname github.com
    User git
    IdentityFile ~/.ssh/rsa_2

Configurazione Git:

[remote "origin"]
    url = git@github_username1:username2/repo.git

Nota: anche se gitnel mio esempio ho specificato il nome utente in entrambe le posizioni, deve essere specificato solo una volta: git@in Git URL avrà la priorità rispetto User gitalla configurazione SSH.


2
In alcuni casi potresti dover aggiungere IdentitiesOnly=yessu ogni hostsezione per assicurarti che ssh sceglierà solo il file di identità scelto e non predefinito / provi qualcos'altro ..
TCB13
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.