Yanlış bir anahtar önermek için ssh'ı nasıl durdurabilirim?


33

(Bu ssh ile bir sorun, gitolitle değil)

Ev sunucumda gitolit yapılandırdım (ubuntu 12.04 sunucusu, open-ssh). Depoları yönetmek için özel bir kimlik dosyası istiyorum, bu yüzden iki farklı kimlik anahtarı kullanarak ssh'ye kendi ev sahibime erişmem gerekiyor.

Bu .ssh / config dosyamın içeriği:

Host gitadmin.gammu.com
User            git
IdentityFile    /home/alvaro/.ssh/id_gitolite_mantra

Host git.gammu.com
User            git
IdentityFile    /home/alvaro/.ssh/id_alvaro_mantra

Hosts dosyamın içeriği:

# Git
127.0.0.1      gitadmin.gammu.com
127.0.0.1      git.gammu.com

Bu nedenle, "normal" hesap ile erişmek için bu şekilde gitolit ile iletişim kurabilmeliyim:

$ssh git.gammu.com 

ve bu şekilde idari hesaba erişmek için:

$ssh gitadmin.gammu.com

Normal hesapla erişmeye çalıştığımda, her şey yolunda:

alvaro@mantra:~/.ssh$ ssh git.gammu.com
PTY allocation request failed on channel 0
hello alvaro, this is gitolite 2.2-1 (Debian) running on git 1.7.9.5
the gitolite config gives you the following access:
    @R_ @W_    testing
Connection to git.gammu.com closed.

Aynı şeyi idari hesapla yaptığımda:

alvaro@mantra:~$ ssh gitadmin.gammu.com
PTY allocation request failed on channel 0
hello alvaro, this is gitolite 2.2-1 (Debian) running on git 1.7.9.5
the gitolite config gives you the following access:
    @R_ @W_    testing
Connection to gitadmin.gammu.com closed.

İdari depoyu göstermelidir. Ssh ile ayrıntılı seçeneği başlattıysam:

ssh -vvv gitadmin.gammu.com 
...
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug2: key: /home/alvaro/.ssh/id_alvaro_mantra (0x7f7cb6c0fbc0)
debug2: key: /home/alvaro/.ssh/id_gitolite_mantra (0x7f7cb6c044d0)
debug1: Authentications that can continue: publickey,password
debug3: start over, passed a different list publickey,password
debug3: preferred gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/alvaro/.ssh/id_alvaro_mantra
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Server accepts key: pkalg ssh-rsa blen 279
...

Anahtar id_alvaro_mantra'yı sunuyor ve yapmamalı !!

Aynı şeyi -i seçeneğiyle birlikte belirlediğimde de olur:

ssh -i /home/alvaro/.ssh/id_gitolite_mantra -vvv gitadmin.gammu.com
...
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug2: key: /home/alvaro/.ssh/id_alvaro_mantra (0x7fa365237f90)
debug2: key: /home/alvaro/.ssh/id_gitolite_mantra (0x7fa365230550)
debug2: key: /home/alvaro/.ssh/id_gitolite_mantra (0x7fa365231050)
debug1: Authentications that can continue: publickey,password
debug3: start over, passed a different list publickey,password
debug3: preferred gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/alvaro/.ssh/id_alvaro_mantra
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Server accepts key: pkalg ssh-rsa blen 279
debug2: input_userauth_pk_ok: fp 36:b1:43:36:af:4f:00:e5:e1:39:50:7e:07:80:14:26
debug3: sign_and_send_pubkey: RSA 36:b1:43:36:af:4f:00:e5:e1:39:50:7e:07:80:14:26
debug1: Authentication succeeded (publickey).
...

Ne oluyor? Bir şeyi özlüyorum ama ne olduğunu bulamıyorum.

Bunlar benim ev direktörümün içeriği:

-rw-rw-r--  1 alvaro alvaro  395 nov 14 18:00 authorized_keys
-rw-rw-r--  1 alvaro alvaro  326 nov 21 10:21 config
-rw-------  1 alvaro alvaro  137 nov 20 20:26 environment
-rw-------  1 alvaro alvaro 1766 nov 20 21:41 id_alvaromaceda.es
-rw-r--r--  1 alvaro alvaro  404 nov 20 21:41 id_alvaromaceda.es.pub
-rw-------  1 alvaro alvaro 1766 nov 14 17:59 id_alvaro_mantra
-rw-r--r--  1 alvaro alvaro  395 nov 14 17:59 id_alvaro_mantra.pub
-rw-------  1 alvaro alvaro  771 nov 14 18:03 id_developer_mantra
-rw-------  1 alvaro alvaro 1679 nov 20 12:37 id_dos_pruebasgit
-rw-r--r--  1 alvaro alvaro  395 nov 20 12:37 id_dos_pruebasgit.pub
-rw-------  1 alvaro alvaro 1679 nov 20 12:46 id_gitolite_mantra
-rw-r--r--  1 alvaro alvaro  397 nov 20 12:46 id_gitolite_mantra.pub
-rw-------  1 alvaro alvaro 1675 nov 20 21:44 id_gitpruebas.es
-rw-r--r--  1 alvaro alvaro  408 nov 20 21:44 id_gitpruebas.es.pub
-rw-------  1 alvaro alvaro 1679 nov 20 12:34 id_uno_pruebasgit
-rw-r--r--  1 alvaro alvaro  395 nov 20 12:34 id_uno_pruebasgit.pub
-rw-r--r--  1 alvaro alvaro 2434 nov 21 10:11 known_hosts

Teklif edilmeyen başka anahtarlar var ... neden id_alvaro_mantra değil diğer anahtarlar teklif edildi? Anlayamıyorum

Yardıma ihtiyacım var, nereye bakacağımı bilmiyorum ....

Yanıtlar:


53

Bu, aşağıdakilerin sayfasına göre beklenen bir davranışdır ssh_config:

 IdentityFile
         Specifies a file from which the user's DSA, ECDSA or DSA authentica‐
         tion identity is read.  The default is ~/.ssh/identity for protocol
         version 1, and ~/.ssh/id_dsa, ~/.ssh/id_ecdsa and ~/.ssh/id_rsa for
         protocol version 2.  Additionally, any identities represented by the
         authentication agent will be used for authentication.  

         [...]

         It is possible to have multiple identity files specified in configu‐
         ration files; all these identities will be tried in sequence.  Mul‐
         tiple IdentityFile directives will add to the list of identities
         tried (this behaviour differs from that of other configuration
         directives).

Temel olarak, IdentityFiles belirtmek, zaten istemciye sunulan SSH aracısının geçerli bir listesine anahtar ekler.

.ssh/configDosyanızın altındaki bu davranışı geçersiz kılmayı deneyin :

Host *
IdentitiesOnly yes

Çok teşekkürler, işe yaradı. Tamamen ssh-ajanı unuttum!
Alvaro Maceda

3
Ayrıca, bunu ana bilgisayar düzeyinde belirleyebilirsiniz, sonunda yaptığım şey Host git.gammu.com User git buydu : IdentityFile /home/alvaro/.ssh/id_alvaro_mantra IdentitiesOnly yes`
Alvaro Maceda

2
@AlvaroMaceda doğru. IdentitiesOnly yesGitadmin.gammu.com ve git.gammu.com Hostgirişlerine ekleme yapmak yeterlidir. Diğer ana bilgisayarları etkileyecek bir joker karakter girişi yapmanız gerekmez.
Bruno Bronosky

6

Benim için çözüm, komut ile ssh anahtarlarının listesine bir anahtar eklemekti:

ssh-add ~/.ssh/id_name_of_my_rsa_key

bu yüzden sunucuya bağlanırken sunulabilir. Bir ssh ekledikten sonra, doğru olanı otomatik olarak tanıdı.

Düzenle:

Ancak son zamanlarda bence daha iyi ve daha kalıcı olan çözüm, yapılandırma dosyanızı şu şekilde ~/.ssh/configeklemek ve eklemek olacaktır IdentitiesOnly yes:

Host github.com
  HostName github.com
    User git
      IdentityFile ~/.ssh/id_rsa
      IdentitiesOnly yes

Teşekkürler, ikinci yaklaşımınız benim yapmam gereken şeydi. Yan notlar: HostName örneğinizde değeri aşırıdır, çünkü değeri Host'unkine eşittir, girinti birden fazla düzeye sahip değildir, çünkü Host ve Match'e göre yalnızca ssh_config içinde gruplama vardır.
Dess

İkinci yaklaşım OS X Catalina'da benim için çalışan tek yaklaşımdı.
Daryl
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.