Bu ssh-agent problemini nasıl çözebilirim?


17

Linux Mint kullanıyorum ve girişte otomatik olarak kilidini açmak için gnome anahtarlığı alamadım, öyle görünüyor.

Sorunumun bir belirtisi şöyledir:

$ ssh-add
Identity added: /home/me/.ssh/id_rsa (/home/me/.ssh/id_rsa)

$ git pull
WARNING: gnome-keyring:: couldn't connect to: /tmp/keyring-Nmf3J3/pkcs11: No such file or directory

Git'in benden herhangi bir şifre girişi olmadan itip / çekebilmesini nasıl sağlayabilirim?

Burada gnome-keyring ve ssh-agent ile birkaç şey olduğunu fark ettim, ancak onu çivilemedim.

ssh-addBir oturum sırasında çalıştırmak , artık SSH / git için parolamın istenmediği anlamına geliyor.

Sorun şu ki ssh-addher oturum sırasında çalıştırmam gerekecek - Gnome'un anahtarlık kilidini girişte nasıl açacağımı kaçırmamalıyım.

$ export | grep GNOME          
GNOME_KEYRING_CONTROL=/tmp/keyring-hjMM4V
GNOME_KEYRING_PID=1961

İlk düzenleme ile aynı oturumda tekrar oldu. Yaptım git pullve aldım WARNING: gnome-keyring:: couldn't connect to: /tmp/keyring-hjMM4V/pkcs11: No such file or directory.

$ env | grep SSH
SSH_AGENT_PID=2116
SSH_AUTH_SOCK=/tmp/ssh-OACxJMBY2038/agent.2038

$ ps -fp $SSH_AGENT_PID
UID        PID  PPID  C STIME TTY          TIME CMD
eoin      2116  2038  0 09:47 ?        00:00:00 /usr/bin/ssh-agent /usr/bin/dbus-launch --exit-with-session x-session-manager

1
export | grep GNOMESonuçları yayınlayıp yayınlayabilir misiniz ? Bu hatayı gördün mü ?
didster

İlgili bir hata gibi görünüyor. Uyarıyı her zaman görmediğim için, gnome-keyringgirişte otomatik olarak kilidini açmak için daha basit bir sorunum olup olmadığından emin değilim .
eoinoc

muhtemelen gnome-keyring'den başka bir ajanınız var. Ne hakkında env | grep SSHveps -fp $SSH_AGENT_PID
Stéphane Chazelas

@StephaneChazelas Önerdiklerinizi ekledim, teşekkürler. Evet, hayatı karmaşık zshve tmuxkoşturup yaptım (sadece bahsetmek gerekirse)
eoinoc

Yanıtlar:


2

Gerçekleşmesi gereken şey:

Bir gnome oturumu başlatırsınız, bunun bir gnome-keyring daemon'unun (ssh aracısı olarak da görev yapar) bir kısmı başlar ve o gnome oturumu sırasında başlatılan her şeyin ortamı o ssh aracısı ile nasıl iletişim kuracağınızla ilgili bilgilerle güncellenir. Grafik olarak oturum açtıktan sonra verdiğiniz şifre varsayılan anahtarlığın kilidini açmak için kullanılır.

Gnome-keyring'i bir ssh-agent olarak kullandığınızda, gibi başka bir ajan kullanmak istemezsiniz ssh-agent.

X oturumunuz sona erdiğinde, gnome-keyring de öyle. Ama tmux oturumunuz devam ediyor. Ardından, başka bir gnome-keyring veya ssh-agent başlatsanız bile, ortamlarını tmuxyeni soketin yolu ile güncellemezseniz, daha önce başlatılan işlemlerin ortamı onunla konuşamaz.

Yapabilecekleriniz:

gnome-keyring-daemon -r > ~/.gkr

Ve . ~/.gkryeni gnome anahtarlığını kullanmak istediğiniz tüm kabuklarda yapın

Gnome-keyring-daemon'un hangi DISPLAY'e bağlanacağına dikkat edin.


Bu sadece X oturumum sona erdiğinde, yani her çıkış yaptığımda ve tekrar giriş yaptığımda olduğu anlamına mı geliyor? Bende yok, değil .gkrmi? Hangi ekrana gnome-keyring-daemonbağlanacağına nasıl dikkat edebilirim ?
eoinoc

2

Denediğim ilk şey, apt-get install ssh-askpass-gnomeeğer o paketi (veya alternatif bir askpass programını) yüklemediyseniz, gnome anahtarınızın kilidini açmanız gerektiğinde şifrenizi isteyemez.

Ayrıca DISPLAYdeğişkeninizin doğru şekilde ayarlanması gerekir:

$ echo $DISPLAY
:0.0

Ayrıca terminalinize nasıl başlıyorsunuz? Terminal oturumunu başlatma şekliniz ve bunun miras alıp almama konusunda bir sorun olabilir gnome-session. Bu, anahtar bağlarınızı ayarlamak için bazı gnon-gnome programı kullandığınızda olabilir.

Kullandığınızı varsayarak gnome-terminalkullanarak kontrol edebilirsiniz pstree. Burada doğru mirasın gerçekleştiğini görebilirsiniz:

$ pgrep gnome-terminal | xargs -l1 pstree -s 
init(1)───lightdm(1643)───lightdm(26912)───gnome-session(27049)───xmonad-x86_64-l(27139)───gnome-terminal(26036)─┬─bash(26041)
                                                                                                                 ├─gnome-pty-helpe(+
                                                                                                                 ├─{gnome-terminal}+
                                                                                                                 ├─{gnome-terminal}+
                                                                                                                 └─{gnome-terminal}+

Oysa bu oturumda gnome-session:

$ pgrep gnome-terminal | xargs -l1 pstree -s 
init(1)───sh(25919)───gnome-terminal(25920)─┬─bash(25927)
                                            ├─gnome-pty-helpe(25926)
                                            ├─{gnome-terminal}(25921)
                                            ├─{gnome-terminal}(25924)
                                            └─{gnome-terminal}(25928)

Ayrıca, ssh-agentaşağıdakiler tarafından başlatıldığını kontrol edin gnome-session:

$ pgrep ssh-agent | xargs -l1 pstree -s
init(1)───lightdm(1643)───lightdm(26912)───gnome-session(27049)───ssh-agent(27091)

Hangi terminali kullandığım konusunda biraz karmaşık (kendi hatam!). Benim Terminal fırlatma komutu mate-terminal --maximize -e tmux(ki sanırım olduğunu gnome-terminal). Ayrıca, zshiçine yüklenir tmux. ssh-askpass-gnomekuruldu. $DISPLAYbeklenen sonucu verdi. Miras için, hiç bir anı olmadan tmuxoturuyor . Ayrı bir dalda, öyle . Son soruya cevap vermek için, çıkış geçerli: . Ne düşünüyorsun? Teşekkürler. mate-terminalgnome-sessiontmux───zsh───xargs───pstreeinit───mdm───mdm───x-session-manag───ssh-agent
eoinoc

İyi, o zaman ben senin olmamasından düşünüyorum Gnome kullanıyorsanız (ve Nane varsayılan onu değiştirdik yüzden sürece? varsayılan olarak yapar düşünmek) presuming mate-terminaldevralan gnome-sessionsorundur. iki soru: 1) çıktısı nedir pgrep -fl gnome-sessionve; 2) terminalinizi gerçekten çağırmak için ne yapıyorsunuz? bir menüden? kısayol tuşu bağlayıcısından? veya ????
aculich

Evet, Gnome'dayım. 1) Çıktı boş. 2) Çok ilginç. Genellikle yaparım Ctrl+Alt+t. Daha Keyboard Shortcutsönce bahsettiğim komutu kullanarak Linux Mint uygulamasını kullanarak ayarladığım bir kısayol . Ancak , Terminalana "Başlat" menüsünden, SSH farklı davranıyordu . Gnome GUI, anahtarlık şifremi girmemi istedi. Bu parolayı daha sonraki oturumlar için kaydetme seçeneği gri renkteydi, seçemedim. (Menü başlatıcı komutu da mate-terminal --maximize -e tmux.) Bu bizi yaklaştırıyor mu? Teşekkürler aculich.
eoinoc

İle garip davranışlar görüyorsanız Ctrl+Alt+tKlavye Kısayollarında ayarladığınız muhtemelen mdm / MATE'de bir hata yaşadığınızı düşünüyorum. Hangi Mint sürümünü kullanıyorsunuz?
aculich

Linux Mint 13'te bir versiyonum var. Fakat menüye erişilen terminal için neden hala "her giriş yaptığımda bu parolayı kaydet" i seçmeme izin vermiyor?
eoinoc

1

Şifre korumalı SSH anahtarını kalıcı olarak saklamakta sorun olduğunu düşünüyorum.

Lütfen aşağıdaki kaynaklara bir göz atın:


Ben giderken yorum yapacağım. İlk bağlantıyla, `IdentityFile ~ / .ssh / id_rsa` öğesini ekledim, ~/.ssh/configancak bu düzeltmedi.
eoinoc

Üçüncü bağlantı, zaten yaptığımdan daha ileri gitmeyen temel kurulumu gösterir. Yine de teşekkürler.
eoinoc

-1

Bunu .bash_profile klasörünüze ekleyin

if [ -n "$SSH_AUTH_SOCK" \
    -a "${SSH_AUTH_SOCK::13}" = "/tmp/keyring-" \
    -a ! -L "$SSH_AUTH_SOCK" ]
then
    OLD_AUTH_SOCK="$SSH_AUTH_SOCK"
    eval `ssh-agent`
    mv "$OLD_AUTH_SOCK" "$OLD_AUTH_SOCK"~
    ln -sfn "$SSH_AUTH_SOCK" "$OLD_AUTH_SOCK"
    SSH_AUTH_SOCK="$OLD_AUTH_SOCK"
fi

Teşekkürler Mark. Bununla $SSH_AUTH_SOCK, bir değeri vardır /tmp/ssh-QCndYkdq2025/agent.2025. Bir şey mi kaçırıyorum? $git pullSSH şifresi istemini hala getiriyor.
eoinoc

Sunucudaki .ssh / authority_keys dosyanızdaki izinlerinizi kontrol edin. 0600 olmalı.
Mark Cohen

Sunucuda mı? GitHub harici sunucudur ve SSH anahtarım orada kaydedilir. Bu daha çok yerel bir sorun değil mi?
eoinoc

Üzgünüz, github kullandığınızı fark etmediniz. Evet, o sunucu üzerinde kontrolünüz yok. Ssh-agent'ınıza birden fazla anahtar ekleyebilir ve düzgün bir şekilde yetkilendirebileceğinizden emin olmak için shost'yu localhost'a deneyebilirsiniz. Ayrıca, ssh -vvv user @ host'u deneyebilir ve neyin kırıldığını görebilirsiniz.
Mark Cohen

Çoğu masaüstü Linux sistemi (Mint dahil) ssh-agent, kutudan çıktığı anda giriş yaptıktan sonra düzgün şekilde işler ve genellikle bu gibi şeyleri kırar. Herhangi bir nedenle sisteminiz işlemezse ssh-agent, elle yapmayın. Bunun yerine , bu ve ilgili sorunları ele almak için iyi tasarlanmış anahtarlık kullanın . Ayrıca BSD (Mac) ve diğer Linux dışı sistemler için de çalışır.
aculich
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.