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.