Bitbucket'e her basışımda şifre sorulmasını nasıl önleyebilirim


217

Bu kılavuzun yardımıyla ssh eşyalarımı oluşturdum ve iyi çalışıyordu ( hg pushparola sorulmadan koşabilirdim ). Hala aynı ana dizini kullandığımı düşünerek o zaman ve şimdi arasında ne olmuş olabilir.

$ cat .hg/hgrc 
[paths]
default = ssh://hg@bitbucket.org/tshepang/bloog

$ hg push
Enter passphrase for key '/home/wena/.ssh/id_rsa': 
pushing to ssh://hg@bitbucket.org/tshepang/bloog
searching for changes
...

Yanıtlar:


337

Bir ssh ajanı kullanmanız gerekir. Kısa cevap: deneyin

$ ssh-add

ittirmeden önce. Sorulduğunda parolanızı girin.

Eğer zaten bir ssh ajanı çalıştırmıyorsanız aşağıdaki mesajı alacaksınız:

Could not open a connection to your authentication agent.

Bu durumda, birini başlatabilir ve ortamınızı bu şekilde ayarlayabilirsiniz

eval $(ssh-agent)

Ardından ssh-addkomutu tekrarlayın .

Ssh ajanı man sayfasına bir göz atmaya değer .


2
evalSadece yazabileceğin nokta ne ssh-agent?
James McMahon

4
Kullanmanıza izin veren bazı komutları görüntüler ve bunları sizin için yürütmez; evalEkleme yapar.
tshepang

Asıl soru ile ilgili değil, ancak bu sorunları GitHub, Bitbucket vb. İle ilgili olarak sürdürmeye devam ederseniz, kullanıcı adı + şifre sormaya devam edecek olan http'yi değil git / ssh URL'sini kullandığınızdan emin olun.
Eczacılık

Varsayılan bir anahtarınız yoksa veya katları eklemek istiyorsanız,ssh-add /path/to/key
hoosierEE

46

Bunu çözmenin bir yolu ssh-agentve ile ssh-add:

$ exec ssh-agent bash
$ ssh-add
Enter passphrase for ~/.ssh/id_rsa: 

Bundan sonra parola geçerli oturum için kaydedilir. ve bir daha sorulmayacak.


7
Çoğu insan, geçiş cümleleri için tıkanmak istemez.
connexo

26

Ben ssh anahtarlarını yönetmek için Anahtarlık kullanıyorum . Ayrıca Debian'da mevcuttur ve muhtemelen Ubuntu ile birlikte

apt-get install keychain

İşte Debian Anahtarlık Paketi sayfası . Gördüğünüz gibi, proje çok aktif değil ama benim için çalışıyor. Ben de başka bir yanıt bu konuda biraz yorumladı burada


2
//, Bu benim için çalıştı. Ssh-agent'tan çok daha iyi, çünkü her terminali açtığımda ssh anahtar şifremi girmem gerekmiyor .
Nathan Basanese

@NathanBasane, bir terminal açtığınızda anahtarlık kullanarak ssh anahtar şifresini girmeniz gerekmediğini mi söylüyorsunuz? Bunu nasıl yapılandırıyorsunuz? çünkü anahtarlık her zaman terminali açtığımda şifre sormaya devam ediyor, ancak ilk başlattığımda yine de açtıktan sonra yine de. Her seferinde parolaya girmek istemiyorum.
m4l490n

@ m4l490n Hayır, anahtarlık kullanıyorsanız, bir terminali her açışınızda ssh anahtar şifresini girmeniz gerekmez. Ancak önyüklemeden sonra bir kez girmeniz gerekir. Parola diske kaydedilmedi - bu güvensiz olur.
Faheem Mitha

Benim için her giriş yaptığımda (uzaktaki bir sunucuda bir git deposu + ssh anahtarım var ve her zaman bir "git çekme" yaptığım zaman parolayı girmem gerekiyor) soruyor
Martin Thoma

@ MartinThoma Bu yanlış görünüyor. .Ssh dosyasının doğru yapılandırıldığından emin olun. Özellikle, kabuğunuz doğru şekilde yapılandırılmış mı? Hala senin için çalışmıyorsa ve çözemezsen, bir soru sorabilirsin.
Faheem Mitha

13

Aşağıdaki ~ / .ssh / config dosyasını oluşturun (veya varsa düzenleyin):

Host *
    UseKeychain yes
    AddKeysToAgent yes
    IdentityFile ~/.ssh/id_rsa

Ama her hizmet için farklı bir anahtar kullanıyorum ...
connexo

@connexo, joker karakter yıldızını ana bilgisayar adınızla ve 'id_rsa' ile kendi özel anahtarınızla değiştirebilirsiniz
ness-EE

1
IgnoreUnknown AddKeysToAgent,UseKeychainHemen üstüne eklemem gerekiyordu UseKeychain yes.
importantRatio

1
Bu hatayı alıyorum: "UseKeychain yes" satırında "Kötü yapılandırma seçeneği: usekeychain".
m4l490n

@ m4l490n: Görünüşe göre, UseKeychainseçenek OpenSSH 7.1p2'de (2016-02-28) eklenmiş. Belki daha eski bir versiyonunuz vardır. openssh.com/txt/release-7.2
chus

6

Kolaylık sağlamak için, en uygun yöntem cevapların bir kombinasyonudur jmtd ve Faheem .

Tek ssh-agentbaşına kullanmak , ssh-agentaçtığınız her yeni terminal için yeni bir ihtiyaç örneğinin oluşturulması gerektiği anlamına gelir . keychainbaşlatıldığında, özel anahtar (lar) ın şifresini isteyecek ve saklayacaktır. Bu şekilde özel anahtarınız şifre korumalıdır, ancak şifrenizi tekrar tekrar girmek zorunda kalmazsınız.

Arch wiki gelen anahtarlık başlatılıyor önerir /etc/profile.d/gibi veya kabuk profil .bash_profileveya .bashrc. Bu, bir terminal açtığınız anda anahtarlığınızı güçlendirmesi açısından bir dezavantajdır.

Daha esnek bir yaklaşım, keychainbelirli bir tmuxoturumla birleştirmektir . Yani, içinde .bash_profile:

tsess=$(tmux ls 2>&1)

if [[ "${tsess%%:*}" = "secured" ]] && 
   [[ -f $HOME/.keychain/$HOSTNAME-sh ]]; then
    # start keychain
    /usr/bin/keychain -Q -q --nogui ~/.ssh/id_rsa
    . $HOME/.keychain/$HOSTNAME-sh
fi

... ve sonra güvenli tmuxoturumu gerektiği gibi ve gerektiğinde başlatmak için bir durumdur (bir anahtardan başlatılır):

#!/bin/bash
PID=$(pgrep tmux)
new="tmux -f $HOME/.tmux/conf new -s secured"
old="tmux attach -t secured -d"

if [[ -z "$SSH_AUTH_SOCK" ]]; then
    eval `ssh-agent`
    trap "kill $SSH_AGENT_PID" 0
fi

if [[ -z "$PID" ]]; then
    urxvtc -title "SSH" -e sh -c "${new}"
else
    urxvtc -title "SSH" -e sh -c "${old}"
fi

ssh-add

Şimdi, anahtarlığınız belirli bir tmuxoturuma başladığınızda yalnızca bir kez başlatılacak . Bu oturum devam ettiği sürece, bu sshtuşlara erişebilecek ve uzak havuzlarınıza gidebileceksiniz.


Bunun uzak bir makinede çalışmasını nasıl sağlayabilirim? İkinci betiği $ SSH_CLIENT için kontrol etmek üzere değiştirdim ve varsa urxvtc'yi çalıştırmayın, sadece tmux. Bu çalışır, ancak sorun .bash_profile kısmıdır. Kutuya ilk giriş yaptığımda "tmux ls" nin çıktısı olan "sunucu bulunamadı: Bağlantı reddedildi" yazıyor. Sonra ikinci betiği çalıştırdığımda tmux ya yeni bir oturum başlatıyor ya da mevcut olanı ekliyor, ancak anahtarlık istemi yok. Sonra oturumdan çıktığımda, anahtarlık istemi orada bekliyor.
jonyamo

Oturum yoksa, tmux işlevini susturma yanıtını güncelledim.
jasonwryan

Teşekkürler, ama bu hala anahtarlıkla ilgili sorunu çözmedi. tmux yeni oturumu oluşturur, ancak doğrudan herhangi bir boş istemde bulunur. Sadece tmux oturumundan çıktığımda parolamı soran anahtarlık istemini görüyorum.
jonyamo

Sanırım anahtarlık demekten vazgeçmeliyim çünkü anahtarlık sadece .bash_profile dosyasında çalıştırılıyor. Sorun ssh-add komutunu kullanmaktan kaynaklanıyor. Her ne kadar, tmux oturumu oluşturduktan sonra ssh-add komutunu manuel olarak çalıştırsam, işe yarıyor.
jonyamo

1
İkinci betiği atla ve güvenli tmux oturumuna başla. .profileBu yolla, en kısa sürede giriş yaparsın.
jasonwryan

0

Kullanabilirsiniz sshpass:

$ sudo apt-get install sshpass
$ sshpass -p 'password' ssh username@server

Her sshpass -p yourpassphrasezamanki sshkomutunuzu eklemeden önce eklemeniz gerekir .


2
Bu aptalca bir fikir gibi geliyor. Bu, şifrenizin kabuk geçmişinizde açık bir şekilde görünmesini sağlamaz mı?
connexo

Kesinlikle, fakat oturumunuzu bir şifre ile de korumanız gerekmiyor mu?
belka

1
Yapsanız bile, ne sıklıkta yanınızda oturan ve sizden / sizden öğrenirken yardım eden bir meslektaşınız var?
connexo
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.