Bir kez SSH şifresini girin


124

Yükseltmeden önce

git clone git@...Bilgisayarım başına bir kez (ssh kullanarak) çalıştırdığımda, SSH şifremi eklemek için bir metin kutusu içeren ve Tamam ile onaylanan bir pencere iletişim kutusu açıldı . Sonra sistemimin bir sonraki başlangıcına kadar parola gerekmiyordu.

13.10'a yükselttikten sonra

Ubuntu 13.10'a yükselttikten sonra bu pencere artık görünmüyor ancak terminalde bir mesaj beliriyor:

Enter passphrase for key '/home/username/.ssh/id_rsa': 

... bir git deposunu klonlarken bu her zaman görünür.

Bunu nasıl düzeltebilirim? Şifremi sadece bir kere girmek istiyorum.


1
Bunun için ssh-addkomutu kullanman gerektiğini düşünüyorum . Bunu denediniz mi?
devius

2
Denedim ssh-agent bash+ ssh-add. Bu sadece birkaç dakika çalışır.
Ionică Bizău

Ne de olsa aynı sorunu yaşıyorum. OpenSSH'nin ssh-ajanı ve Gnome Keyring Daemon arasında bir çatışma olabileceğini düşünüyorum.
Devius


2
Ekle AddKeysToAgent yes.ssh / config benim için çalışıyor.
xslittlegrass

Yanıtlar:


138

Güncelleme: 13.10’dan bir hata gibi görünüyor:

https://bugs.launchpad.net/ubuntu/+source/libpam-ssh/+bug/1247169


Neyse, aşağıdaki komutları çalıştırarak sorun benim için çözüldü:

Nasıl düzeltilir

Bunu aşağıdaki komutları girerek düzelttim:

$ ssh-agent bash

Bu, özel anahtarlar eklemenize izin veren yeni bir bash işlemi oluşturur. Yeni bir özel anahtar eklerken sizden bir kez ve sadece bir kez şifre girmeniz istenir.

Ve sonra:

$ ssh-add /home/username/.ssh/id_rsa
Enter passphrase for /home/username/.ssh/id_rsa: 
Identity added: /home/username/.ssh/id_rsa (/home/username/.ssh/id_rsa)

... usernamekullanıcı adın nerede ? Aynısını $USERdeğişken kullanarak da yapabilirsiniz :

$ ssh-add /home/$USER/.ssh/id_rsa

Alternatif olarak, sadece ~ev dizininiz için kullanın .

$ ssh-add ~/.ssh/id_rsa

Ve sorun çözüldü.


47
Bu sorunu hiç çözmez. Siz sadece terminalden çıkana kadar kimliği araca ekler. Yeni bir terminal açarsanız ssh-addtekrar yapmanız gerekir .
Devius

@devius Evet, bir hata gibi görünüyor. Ancak, yukarıdaki komutlar sorunumu düzeltti ...
Ionică Bizău

3
Açıklığa kavuşturmak için: Bu "düzeltme" ile sadece bu terminaldeki parolayı tekrar yazmak zorunda kalmayacaksınız. Yeni bir terminal açtığınız anda parolayı tekrar vermeniz gerekecektir.
harijay

9
$ ssh-add /home/username/.ssh/id_rsa(Onsuz ssh-agent bash) denedim ve terminali yeniden açtıktan sonra bile benim için çalıştı. Ama benim için tam çözüm bu bir stackoverflow.com/a/4246809/532252 oldu . Makineyi yeniden başlattıktan sonra bile her şey yolunda.
kishie

1
Sadece terminale ssh-add yazdım. Ssh-agent
bash'e geçmenize

39

0) Kısa cevap

Başınıza .ssh/configbir satır ekleyin :

AddKeysToAgent yes

ve git / ssh / ... komutunu çalıştırın. Yeterli değilse, ssh sürümünüzü kontrol edin ve ssh-agent'ın bu talimatlarla yüklü olduğunu kontrol edin:

1) openssh versiyonunu kontrol edin

Öncelikle ssh sürümünüzün 7.2'ye eşit olması gerektiğini kontrol edin :

ssh -V

2) config dosyasını düzenleyin

Eğer durum buysa .ssh/config, başında bir satır ekleyin.

AddKeysToAgent yes

3) ssh-aracısının zaten açık olup olmadığını kontrol edin

Genellikle dağıtımlar otomatik olarak bir ssh-ajanı yükler. Kontrol etmek için koş

ps aux | grep -v grep | grep ssh-agent

İçinde herhangi bir çizgi görmüyorsanız, çalıştırarak yüklemeniz gerekir:

eval $(ssh-agent)

Bunun aracıyı yalnızca geçerli terminalde etkinleştirdiğini, böylece her yerde etkinleştirmek için bu satırı ~/.profiledosyanıza eklemeyi deneyebilir ve yeniden başlatabilirsiniz .


11
AddKeysToAgent yesve - kanonik sonrası 2016 cevaptır tam en modern kullanıcıları için yaklaşık grepping ne. 2017'nin ortası. Ubuntu> = 16.04 ( Xenial Xerus ) şimdi makul bir varsayımdır. Vahşi doğadaki çoğu OpenSSH kurulumu şimdi bu seçeneği desteklemektedir. Bu soruya her cevap savunduğu türden Geçici kabuk komut dosyası kludges yani ... vardır modası geçti . </sigh>
Cecil Curry

2
Bu kabul edilmiş bir cevap olmalıdır
saat

32

Bu Atlassian belgesi benim için sorunu Ubuntu 14.04 Server Edition'da çözdü:

Sadece bu değerleri .bashrcdosyanıza ekleyin :

SSH_ENV=$HOME/.ssh/environment

# start the ssh-agent
function start_agent {
    echo "Initializing new SSH agent..."
    # spawn ssh-agent
    /usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
    echo succeeded
    chmod 600 "${SSH_ENV}"
    . "${SSH_ENV}" > /dev/null
    /usr/bin/ssh-add
}

if [ -f "${SSH_ENV}" ]; then
     . "${SSH_ENV}" > /dev/null
     ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
        start_agent;
    }
else
    start_agent;
fi

Giriş yaptıktan sonra sadece bir kez şifre sorar ve önbelleklenir. Her seferinde girmek zorunda değilsin.


2
Sabayon Linux'ta bu cevabı başarıyla kullandım gibi, diğer dağıtımlar üzerinde çalışıyor gibi görünüyor.
BH2017

1
Teşekkürler! Bu çözüm benim için gnome-key-daemon'un dbus-daemon sorunları nedeniyle işe yaramadığı bir ubuntu sisteminde çalıştı. Özellikle, şu hataları alıyordum "** Mesaj: dbus oturum veriyoluna bağlanamadı: X11 için $ DISPLAY olmadan bir dbus-arka plan programı otomatik olarak başlatılamadı" ve ekran ortam değişkenini ayarladıktan sonra "** İleti: alınamadı dbus oturum veriyoluna bağlanma: // bin / dbus-launch aşağıdaki hatayı kullanarak anormal biçimde sonlandırıldı: Otomatik başlatma hatası: X11 başlatılamadı. "
user207863

1
Bu daha fazla yükseltme gerektirir, sanallaştırılmış Ubuntu 16.04 para cezası sorununu düzeltir.
Niels Keurentjes

3
Bu benim için Windows için de Bash için sorunu giderir. Bash'i birçok kez başlatmayı denedim ve bu parolayı hatırladı. Henüz bir yeniden başlatma denemedim.
Amr

2
diğer tüm çözümleri denedikten sonra bu benim için çalıştı. Bu, OP
João Pimentel Ferreira için

20

Bu hata için bir geçici çözüm , aşağıdakinin altına eklemektir.~/.bashrc

eval `gnome-keyring-daemon --start`

2
GNOME anahtarlığı sadece oturumunuzun bir parçası olmamalı mı?
Pavel Šimerda

1
'Olmalı' hakkında konuşuyorsanız, o zaman bu soru ilk etapta burada olmamalı, eğer her şey mükemmelse
Anwar

1
Buna ait olup olmadığından emin değilim .bashrc. DE profil dosyasına eklemeniz gerekecek gibi gözüküyor
Dmitry Ginzburg

3

Kullananlar balık kabuğu kullanabilirsiniz senaryoyu aynı şeyi yapmak.

# content has to be in .config/fish/config.fish
# if it does not exist, create the file
setenv SSH_ENV $HOME/.ssh/environment

function start_agent                                                                                                                                                                    
    echo "Initializing new SSH agent ..."
    ssh-agent -c | sed 's/^echo/#echo/' > $SSH_ENV
    echo "succeeded"
    chmod 600 $SSH_ENV 
    . $SSH_ENV > /dev/null
    ssh-add
end

function test_identities                                                                                                                                                                
    ssh-add -l | grep "The agent has no identities" > /dev/null
    if [ $status -eq 0 ]
        ssh-add
        if [ $status -eq 2 ]
            start_agent
        end
    end
end

if [ -n "$SSH_AGENT_PID" ] 
    ps -ef | grep $SSH_AGENT_PID | grep ssh-agent > /dev/null
    if [ $status -eq 0 ]
        test_identities
    end  
else
    if [ -f $SSH_ENV ]
        . $SSH_ENV > /dev/null
    end  
    ps -ef | grep $SSH_AGENT_PID | grep -v grep | grep ssh-agent > /dev/null
    if [ $status -eq 0 ]
        test_identities
    else 
        start_agent
    end  
end

0

Bunu kullanıyorum:

vim ~/.profile

eval `/usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh,gpg`
export SSH_AUTH_SOCK
export GPG_AGENT_INFO

0

Azure .ppk dosyası kullanıyorsanız

Sadece pem dönüştürmek ve basit adımlarla izin 400 ekleyin:

sudo apt-get install putty
puttygen <path_to_key>/keyname.ppk -O private-openssh -o <path>/aws_key.pem
sudo chmod 400 <path>/aws_key.pem
ssh -vi aws_key.pem ubuntu@<ip_address>

0

Ubuntu 18.04’te, ssh-agent X oturumu açıldığında başlar, /etc/X11/Xsession.options dosyasında yönetilir:

# cat /etc/X11/Xsession.options
# $Id: Xsession.options 189 2005-06-11 00:04:27Z branden $
#
# configuration options for /etc/X11/Xsession
# See Xsession.options(5) for an explanation of the available options.
allow-failsafe
allow-user-resources
allow-user-xsession
use-ssh-agent
use-session-dbus
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.