Parola korumalı bir SSH anahtarını kalıcı olarak nasıl kaydedebilirim?


9

Harika Pencere Yöneticisi kullanıyorum

Şifreli gizli anahtarları kalıcı olarak nasıl ekleyebilirim?

Buradaki cevaptan esinlenerek ~ / .ssh / config içindeki özel anahtarları ekledim

~ / .Ssh / config içeriği:

IdentityFile 'private key full path'

~ / .Ssh / config izinleri: 0700

Ama benim için işe yaramıyor.

Anahtarı her oturumda manuel olarak eklersem işe yarar ama daha zarif bir yol arıyorum (.bashrc içinde değil)

DÜZENLE :

  • Kullanılması Gnome klasik (hayır efektleri) versiyonu.

SSH anahtarını ssh-copy-ifuzak ana bilgisayara ekledikten sonra , giriş yaptığımda terminalde (GNOME Terminal 3.0.1) aşağıdaki istemi alıyorum:

ssh -i .ssh/Password-Protected-Key user@host
Enter passphrase for key '.ssh/Password-Protected-Key':
  • Harika pencere yöneticisi kullanma v3.4.10. Zaten gnome-keyring-dameondiğer pid öldürdü gnome-keyring-daemon --start | grep SOCKve (grep) çıktısını (ben de ekledim) çalıştırın :

SSH_AUTH_SOCK=/tmp/keyring-2LXXXX/ssh

Aynı adımları izledim ve benzer şekilde GUI ssh-add iletişim kutusu yok.

DÜZENLEME 2 :

Birlikte Ubuntu 11.10 sanal makineden yeni bir şifre korumalı anahtar oluşturdum ve hala herhangi bir şifre istemi alamıyorum.

EDIT 3 : Görünüşe göre bu Başar pencere yöneticisi :( ve muhtemelen diğer ..


1
Parola korumalı bir SSH anahtarı eklemenin anlamı nedir? Amacı yendi ...
MarkovCh1

3
@Syzygy Peki her zaman farklı servis ve uygulamalardan şifreleri mi giriyorsunuz veya giriş şifrenizle şifrenizi açmak için bir anahtarlık mı kullanıyorsunuz?
pl1nk

Başka düşünce / sorularınız var mı, pl1nk? Ödül yetkisiz kullanım süresi çok yakında sona eriyor :-)
ish

@izx Bahsettiğiniz her şeyi kontrol ettim ve hepsi beklendiği gibi. Güncellememde de belirttiğim gibi Gnome'u da kullandım. Hata bildireyim mi?
pl1nk

Burada bazı ipuçları bulabilirsiniz . Görünüşe göre işlerin başlama sırası önemlidir ve gnome-keyring-daemon için de dbus'a ulaşmak önemlidir.
John S Gruber

Yanıtlar:


2

Unity veya gnome-keyring-daemon uygulamasını başlatan bir oturum yöneticisi kullanıyorsanız, bir anahtar oluşturmak, ne için olduğunu tanımlamak, bir parola ayarlamak ve genel anahtarını ssh ile kullanacağınız bilgisayar. Hiçbir terminal komutu gerekmez.

Parolayı şu şekilde oluşturursunuz:

  1. Dosya-> Yeni'yi seçin ve Güvenli Kabuk Anahtarı'nı seçin. Devam düğmesine basın.

  2. Açıklayıcı bir ad yazın ve seçeneğini belirleyin Create and set up.

  3. İki kez bir anahtar sözcük girmeniz istenir (ilk kez yanlış girip girmediğinizi kontrol etmek için ikinci kez).

  4. Genel anahtarın kullanılması gereken bilgisayarı ve anahtarı kullanacağınız bilgisayardaki kullanıcı adını girin. Ortak anahtar diğer bilgisayara kopyalanacak ve gerekirse o bilgisayarda parolanızı girecektir.

Şimdi My Personal Keyssekme tuşu görüntüleyecektir.

Lightdm'de ​​oturum açtığınızda gnome-keyring-daemon'un düzgün başlatıldığını ve tekrar oturum yöneticiniz tarafından başlatıldığını varsayarsak, ssh ile anahtarı ilk kez kullandığınızda anahtar kelimeyi girmeniz istenir. Bu iletişim kutusunda anahtar kelimeyi sağlayabilir, Detailskontrolü seçebilir ve her giriş yaptığınızda anahtarlığın kilidinin açılmasını isteyebilirsiniz - otomatik olarak bu anahtarı sağlar. BasınOK

Uzak bilgisayara oturum açmak için kullanılabilecek başka bir anahtar varsa bu şekilde istenmeyebilir.

Bu işlem tamamlandıktan sonra ilk Denizatı sekmesi Passwords, anahtar adı için bir "Parola girişinin kilidini aç" ı listeler. Görmek için " Parolalar: Giriş" öncesi üçgeni tıklayın .


Yani bu işlevsellik Başar WM ile çalışmıyor Başarımı kullanmaya devam etmek istiyorum, böylece geçici çözümümü kullanmaya devam edeceğim.
pl1nk

19

Parola korumalı bir SSH anahtarını oturumlar ve yeniden başlatmalar boyunca devam ettirme

Muhtemelen istediğiniz şey budur: Anahtar parolayı bir kez girdiğinizde, giriş yaptığınızda her zaman kullanılabilir hale gelir. Unity veya Gnome masaüstlerini kullanan çoğu kullanıcı için çalışır.

  • Ortak anahtarı uzak sunucuya ekledikten sonra bağlandığınızda, GUI ssh-add iletişim kutusunu görürsünüz:

    resim açıklamasını buraya girin

  • Üçgeni tıklatarak "Ayrıntılar" ı genişletin ve aşağıdakileri elde edin. Varsayılan, "oturumu kapattığımda anahtarlığı kilitle" şeklindedir ve oturum başına bir kez parola girmenizi gerektirir:

    resim açıklamasını buraya girin

  • Oturum açtığımda otomatik olarak kilidini aç ... olarak değiştirin , yani oturumunuzda her oturum açışınızda çalışacaktır - kullanıcı şifreniz tarafından "kontrol edilir". Yeniden başlatmalarda devam edecektir.

    resim açıklamasını buraya girin

  • Anahtar parolasını bir kez girin ve hepsi bu - anahtar, masaüstü ortamınıza ilk başarılı oturum açma yoluyla doğrulanır.


AwesomeWM kullanıyorsanız

Yeni bir kullanıcı kimliğinde yeni bir AwesomeWM yüklemesi ile test edildi

  • Varsayılan olarak AwesomeWM şunları kullanır ssh-agent:

    $ ihracat | grep SSH
    declare -x SSH_AGENT_PID = "5479"
    beyan -x SSH_AUTH_SOCK = "/ tmp / ssh-fWCKNnPq5440 / agent.5440"
    
  • Yukarıdaki adımların çalışması gnome-keyring-daemoniçin ssh aracısı değil, SSH kimlik doğrulama arka plan programı olarak kullanmanız gerekir . Lightdm kullanarak giriş yaptığınızda, gnome-keyring-daemonkilit açma şifrenizle bir giriş anahtarının kilidini açmaya çalışan PAM başlar , ancak çalışmaya devam etmesi ve kullanması için yapılandırmanıza eklemeniz gerekir.

  • Aşağıdakilerinizin sonuna aşağıdakileri ekleyin ~/.xprofile:

      #! / Bin / bash
      eval $ (gnome-keyring-daemon - başlangıç)
      SSH_AUTH_SOCK dosyasını dışa aktar
      GNOME_KEYRING_PID dosyasını dışa aktar
      dışa aktar GNOME_KEYRING_CONTROL
    

Harika pencere yöneticisine ~/.xprofilebaşlamadan önce dosyadaki komutlar xsession tarafından yürütülür ve yukarıdaki ortam değişkenleri aracılığıyla PAM tarafından başlatılan işleme bağlanır.gnome-keyring-daemon --login

  • Tekrar lightdm'ye geri dönün ve tekrar oturum açın ve şimdi bunu yaptığınızda ssh user@host, yukarıdaki pop-up'ları almalısınız - özel anahtarlarınızı ~ / .ssh / ile çözmek için bunları kullanın ve özel anahtarlarınızı gnome-keyring giriş anahtarlığına kaydedin.

Herhangi bir pencere yöneticisi / masaüstü ortamı için genel çözüm

  • gnome-keyring-daemonyerine kullanmaktır ssh-agent. Bunun için, çalıştırıyor olmanız gnome-keyring-daemon ve başlatılmanız gerekir ve ya ssh-agentbaşladıktan sonra bunu yapın ya da hiç başlamayın ssh-agent.

  • ssh(aslında ssh-add), SSH_AUTH_SOCKortam değişkeninin değerine göre hangi kimlik doğrulama aracısının çağrılacağına karar verir ve bu da yazarak kontrol edilebilirexport | grep SOCK

  • Bu formun olduğu SSH_AUTH_SOCK=/tmp/ssh-MMFyVlI22130/agent.22130için ssh-agent (eğer anahtar kaydetmek mümkün istiyorum nelerin)

  • ancak formun SSH_AUTH_SOCK="/tmp/keyring-mEQB5g/ssh"için gnome-anahtarlık-cini (istediğiniz)

  • böylece değerini kontrol ve kontrol ps aux | grep keyringo gnome-anahtarlık-cini çalışıyorsa, ve eğer öyleyse, sonuçları ile başlatmakgnome-keyring-daemon --start

  • daha sonra yazarak konsoldaki ilişkili kayıtlı kimlikleri kontrol edebilirsiniz ssh-add -l- eğer "ajan yok" gösteriyorsa, gnome-keyring-daemon yapılandırırken bir hata yaptınız.


Bunu görmedim! Bu iletişim kutusunu hangi komutu kullanabilir, hatta daha iyi hangi komutu kullanabilirim?
pl1nk

@izx Bunu kullanırken ssh-add kullanmak gerekli midir?
John S Gruber

@JohnSGruber Hayır, özel anahtarlar olduğu sürece ~/.ssh, kullanmaya gerek yoktur ssh-add- ilk kullanımda iletişim kutusu açılır. Bunun sadece Unity / Gnome'da çalıştığını unutmayın - sohbetin OP'nin AwesomeWM'yi kullandığını keşfettim , bu işe yaramaz!
ish

1
@ pl1nk: cevabın sonuna doğru AwesomeWM için güncellenmiş çözüme bakınız.
ish

@izx - Desteğiniz için teşekkür ederim güncellenmiş sorumu kontrol et
pl1nk

2

Sorununuzun çözümü ssh aracısını kullanmaktır. Anahtarınızın şifresini bir kez açmanız yeterlidir, bundan sonra ajan tarafından bellekte tutulur ve otomatik olarak kullanılır

  • İle özel / ortak anahtar çifti oluşturun ssh-keygen -t dsa
  • Genel anahtarı uzak makineye kopyalayın, genellikle bu ~ / .ssh / yetkili_anahtarlarıdır (bunun için kullanın ssh-copy-id)
  • ssh-addUzaktaki sisteme giriş yapmadan önce çalıştırın , bu parolanızı isteyecek ve depolayacaktır.
  • Uzak sisteme giriş yapın, şifre gerekmez

ssh-agent, örneğin .net üzerinde iyi açıklanmıştır:

Ssh- ssh -A user@domain.nameagent'ın bir başka avantajı da, uzaktaki sisteme oturum açarsanız, domain.name bilgisayarından özel anahtarı domain.name bilgisayarına her kopyalamadan ortak anahtarınızı içeren üçüncü bir bilgisayara daha fazla ssh yapabilmenizdir (ve asla özel anahtarınızı görür, yalnızca tek seferlik bir sorun / yanıt).


Bunu nasıl yapabilirim? Gönderdiğiniz talimatlardan net değil. Ayrıca bu Ubuntu ile ilgili mi?
pl1nk

Yazımı ayrıntılı talimatla düzenledim
Floyd

Çözümünüz oturum başına şifreyi saklar, ayrıca benim durumumda cevabımda görebileceğiniz gibi gnome-keyring ile bir çakışma olduğu anlaşılıyor.
pl1nk

@ pl1nk: oturumlar arasında saklanmak için parolaya ihtiyacınız var - yani her önyükleme için yalnızca bir kez mi soruluyor ?
ish

evet, oturum başına bir kez şifre girmeniz gerekir. Bu, giriş yaptıktan sonra özel anahtar dosyasına erişebilmenin ötesinde başka bir güvenlik katmanı sağlamak için parola korumalı ssh tuşlarının arkasındaki tüm fikirdir.
Floyd

-1

kullanabilirsiniz

ssh-add 'filename or fullpath'

anahtarınız varsa parola istenecektir

sonra dışarı şifre ile bağlayabilirsiniz


1
Sorumdan bahsettiğim gibi daha zarif bir yol arıyorum.
pl1nk

-2

Özel anahtarlarla çalışmak istiyorsanız şunları yapın:

ssh-keygen -t rsa -N ''

Sonra:

scp .ssh/id_rsa.pubile makine hedefine kopyala.ssh/authorized_keys

scp .ssh/id_rsa.pub user@remote_machine:~/.ssh/authorized_keys

Hepsi tamam.

Uzak makineye şifre olmadan bağlanma:

ssh user@remote_machine

Ve şifre istemimiz yok.


Bu, her seferinde anahtar parolayı sormaya devam edecek.
pl1nk

1
Muhtemelen ssh-keygen -t rsa -N '' komutunu çalıştırdığınızda bir parola koyarsınız. Yukarıdaki komutu çalıştırdığınızda, şifre koymayın, sadece "ENTER" tuşuna basın.
Octávio Filipe Gonçalves

Şifreli anahtarlara sahip olmak istiyorum.
Sorumu

1
Tamam, bunu neden şifre ile yapmak istediğinizi anlamıyorum. Normalde bu konsept, yalnızca istemci makinesini kimlik doğrulaması olmadan tanıyabilen uzak makinelerle bağlantı yapmak için kullanılır. Yani, bu senaryo istemiyorsanız, tek yapmanız gereken normal bir ssh bağlantısı çalıştırmaktır. sağ?
Octávio Filipe Gonçalves

1
İnsanlara ortak anahtarlarını uzaktaki bir makinedeki yetkili_anahtarlar üzerine kopyalamalarını söylemek biraz kaba bir kuvvettir ... Daha iyi bir şifre girişinde ilk kez olacak olan ssh-copy-id user @ remotemachine komutunu kullanmak daha iyidir. APPEND anahtarın üzerine yazmaz.
Floyd
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.