SSH aracısını kullanarak ssh-agent'ı ve ssh-add komutunu çalıştırmanın doğrudan yolu?


37

Sunucuma ssh ile giriş yaptığımda aşağıdaki komutları otomatik olarak çalıştırmaya çalışıyorum:

ssh-agent /bin/bash
ssh-add ~/.ssh/id_rsa

Ssh anahtarımın bir parolası var ve her giriş için bir kez girerek sorunum yok.

Bunu .bashrc dosyama koymaya çalıştım, ancak ssh-agent'ın yeni bir bash oturumu başlattığına inanıyorum. Bunu benim .bashrc dosyamda yaptıktan sonra giriş yapmaya çalıştığımda, takılıyor ve sonra 'anahtar' kilidini açmak için parolayı girin 'komutunu görmek için' exit 'yazmam gerekiyor

Başka bir önerin var mı?

Sunucuda Ubuntu LTS çalışıyor


Neden sunucudaki anahtar ajan? Bağlandığınız yerel istemcide olmalıdır .
Zoredache

@Zoredache git pullUzak sunucuda yapabilmek ve böyle bir şey yapmak istiyorum
21'de

Ardından yerel makinenizde bir SSH ajanı çalıştırın ve ajanı iletin.
Zoredache

@Zoredache Teşekkürler, bunun mümkün olduğunu bilmiyordum. Yine de ssh-add / ssh-agent'ı bir bash betiğinden, yerel makinemden bile yapabilmek istiyorum. Bu komutları elle çalıştırmak zorunda olmak acı verici.
Oyla tıklayın

Yanıtlar:


51

Bunu eklemeyi deneyebilirsiniz:

eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa

Bu şekilde ssh-agentyeni bir kabuk başlatmaz, sadece arka planda kendini başlatır ve uygun ortam değişkenlerini ayarlamak için kabuk komutlarını dağıtır.

Yorumunda söylediği gibi, belki do not uzak ana bilgisayardaki hiç ajan çalıştırmak istiyorum, bunun yerine kutuyu üzerinde çalıştığınız ve kullanımı

ssh -A remote-host

Yerel ssh acentenizin servislerini uzaktaki ana bilgisayara iletmek için.

Güvenlik nedeniyle, yalnızca güvenilir kişiler tarafından yönetilen ana bilgisayarlarla aracı yönlendirme kullanmalısınız, ancak her zaman uzaktan tam bir aracı çalıştırmaktan daha iyidir.


Ben değiştirdiğinizde ssh-agent /bin/bashile ssh-agent -s, sonra yapmaya çalışacağım git pull, hala kilidini özel anahtarın parola bilgilerim isteniyor. Gerçekten istediğim bu değil, sadece ssh-add yaparken parolayı girmek zorundayım ve her git komutunu çalıştırdığımda bunu tekrarlamak zorunda kalmam. Herhangi bir fikir?
Oyla tıklayın

ve aracıyı yerel olarak çalıştırmak ve ssh -A kullanmak sizin için bir seçenek değil mi? Sorun şu ki, ssh-agent'ı her bağlantıda 'yeniden başlatamazsınız'. Her başlattığınızda, 'hiçbir şey' bilmez ve anahtarı ssh eklediğinizde şifresini çözmek zorunda kalacaksınız ...
Tobi Oetiker

.ssh / config dosyanız için: ev sahibi uzak ev sahibi ControlMaster otomatik ControlPath ~/.ssh/master-%l-%r@%h:% p ControlPersist 2h
Tobi Oetiker

1
ayy hemen üstünde benim cevap güncellenmiş .. Eğer ssh-agent çağrı önünde fazladan eval ihtiyaç bash gerçekleştirilen
Tobi OETIKER

1
takma ad oluşturabilirsiniz
Tobi Oetiker

2

Bir alternatif Funtoo's Keychain kullanmaktır . O zaman bu tek astarı bash kabuğuna yapıştırabilirsin:

eval $(keychain --eval id_rsa)

Aynı şeyi yapar (ssh agent, vb. Başlatır), ayrıca her subshell için bir ssh-agent işlemi yapmazsınız. Bunun yerine, sahip olduğunuz "zaten koşan" örnekleri arar ve sizi bunlara bağlar.

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.