SSH config - aynı ana bilgisayar ancak farklı anahtarlar ve kullanıcı adları


31

İki GitHub hesabı açtım, ancak ssh anahtarlarının doğru çalışmasını sağlayamıyorum. Çeşitli yapılandırmaları denedim.


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

Kullanıcı adı1 için çalışır:

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 kullaniciadi2'nin deposunda:

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

Ben de denedim git pushikisi ile IdentityFileve Useraynı bölümündeki ayarları Host. Çıkış, son yapılandırma ile aynıdır.

Uzaktan böyle olduğu için git otomatik olarak "github.com" sunucusunu arar. Host'un istediğin herhangi bir şey olabileceği söyleniyor ( /programming//a/3828682 ). Belirli bir repo'nun kullanması gereken hangi ssh config sunucusundan değiştirmenin bir yolu var mı?

Bunu sadece ~ / .ssh / config dosyasından çözebilseydim ideal olurdu.

Yanıtlar:


44

OpenSSH istemcisi yalnızca Hostsatırı bölüm tanımlayıcısı olarak kullanır ve diğer her şey ayardır. Bağlanırsanız foo@bar.com, SSH " User foo" aramaz ; sadece " Host bar.com" için arama yapacak .

Başka bir deyişle: Host github_username2SSH yapılandırmanızda " " varsa , Git uzaktan kumandalarınızda aynı ana bilgisayarı kullanmanız gerekir - github_username2değil git@github.com.

Ancak, kimlik doğrulama başarısızlıklarına neden olan şey bu değildir github.com, SSH kullanıcıgit adında " " olması gerekir . GitHub SSH sunucuları, kullanıcıları yalnızca SSH anahtarları ile tanımlar.


Doğru bir SSH yapılandırması şöyle olabilir:

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

Git yapılandırması:

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

Not: gitÖrneğimin her iki yerinde de kullanıcı adını belirtmeme rağmen , yalnızca bir kez belirtilmelidir - git@Git URL’si User gitSSH config’te önceliğe sahip olacaktır .


2
Bazı durumlarda , IdentitiesOnly=yeshost
ssh'nin
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.