Ssh anahtarı nasıl kaldırılır?


154

Şu anda bir sunucuya yüklenmiş eski bir SSH anahtarım var. Sorun benim ~/.sshdizin (orijinal id_rsave id_rsa.pubdosyaları ile) kaybetti .

Sonuç olarak, eski SSH anahtarını doğrudan sunucudan kaldırmak ve yeni bir tane yüklemek istiyorum.

Aşağıdaki komutu başarılı olmadan denedim:

$> ssh-add -D

resim açıklamasını buraya girin

Bir SSH anahtarını tamamen kaldırmanın bir yolu var mı?


Ne ile ssh-add -d?
user2196728

5
damnit, bu ssh-add -D, büyük harf
Alexander Mills

Ssh-agent'ınız tarafından kullanılan soketlerinizi kontrol edin (1).
Dwight Spencer

Yanıtlar:


129

İçin en az iki hata raporu olduğunu unutmayın ssh-add -d/-D değil anahtarları kaldırarak:

Kesin mesele:

ssh-add -d/-Dyalnızca manuel olarak eklenen anahtarları gnome-keyring'den siler .
Otomatik olarak eklenen anahtarları silmenin bir yolu yoktur.
Bu orijinal hata ve hala kesinlikle mevcut.

Örneğin, iki farklı GitHub hesabıyla ilişkili iki farklı otomatik olarak yüklenen ssh kimliğiniz varsa - iş ve ev için - bunlar arasında geçiş yapmanın bir yolu yoktur . GitHubs eşleşen ilk kişiyi alır, böylece her zaman işleri projelere yüklemek için bir yol olmadan GitHub'a 'ev' kullanıcısı olarak görünürsünüz.

Otomatik olarak yüklenen anahtarlara ssh-add -duygulanmasına izin vermek (ve otomatik olarak yüklenen anahtarların ssh-add -t Xömrünü değiştirmek), çoğu kullanıcının beklediği davranışı geri yükler.


Daha doğrusu, konu hakkında:

Suçlu gpg-keyring-daemon:

  • Ssh-agent'ın normal çalışmasını bozar, çoğunlukla şifrelenmiş bir ssh anahtarının parolasını yazabileceğiniz güzel bir kutu açabilir.
  • Ve .sshdizininizde paws ve bulduğu anahtarları aracınıza otomatik olarak ekler.
  • Ve bu anahtarları silmenize izin vermez.

Bundan nasıl nefret ediyoruz? Yolları saymayalım - hayat çok kısa.

Yeni ssh istemcileri bir ana bilgisayara bağlanırken ssh-agent'ınızdaki tüm anahtarları otomatik olarak denediğinden bu hata artar.
Çok fazla varsa, sunucu bağlantıyı reddeder.
Ve gnome-keyring-daemon, ssh-agent'ınızın kaç anahtarına sahip olmasını istediğinize karar verdiğinden ve bunları otomatik olarak yüklediğinden VE SİZİ SİLMEMEKTEDEN, tost edersiniz.

Bu hata, iki gün önce olduğu gibi Ubuntu 14.04.4'te de doğrulandı (21 Ağustos 2014)


Olası bir geçici çözüm:

  • Do ssh-add -Dtüm silmek için elle ilave anahtarlar. Bu aynı zamanda otomatik olarak eklenen anahtarları da kilitler, ancak çok fazla kullanmaz, çünkü bir gnome-keyringşey yapmaya çalıştığınızda yine de kilidini açmanızı isteyecektir git push.
  • ~/.sshKlasörünüze gidin ve tanımlamak istediğiniz dosya dışındaki tüm anahtar dosyalarınızı yedekleme adı verilen ayrı bir klasöre taşıyın. Gerekirse denizatı açabilir ve anahtarları oradan silebilirsiniz.
  • Şimdi git pushsorunsuz bir şekilde yapabilmelisiniz .

Başka bir geçici çözüm:

Gerçekten yapmak istediğiniz şey gpg-keyring-daemontamamen kapatmaktır .
Git System --> Preferences --> Startup Applicationsve " SSH Key Agent (Gnome Keyring SSH Agent)" kutusunun işaretini kaldır - bulmak için aşağı kaydırman gerekecek.

Yine de bir alacaksınız ssh-agent, ancak şimdi akılcı davranacak: otomatik olarak yüklenen anahtar yok, bunları eklemek için ssh-add komutunu çalıştırıyorsunuz ve anahtarları silmek istiyorsanız, bunu yapabilirsiniz. Bunu hayal edin.

Bu yorumlar aslında şunları önerir:

Çözüm, gnome-keyring-managerprogram dosyasının yürütme iznini kaldırarak nihayetinde elde edilmesi garip bir şekilde zor olan başlangıçtan korumaktır .


Ryan Lue yorumlara ilginç bir köşe davası daha ekliyor :

Bu kimseye yardımcı olursa: id_rsave id_rsa.pubdosyaları tamamen silmeyi denedim ve anahtar hala görünüyordu.

Görünüşe göre gpg-agentonları bir ~/.gnupg/sshcontroldosyada önbelleğe alıyordu ; Onları oradan manuel olarak silmek zorunda kaldım.

Yani durumdur eklenmiştir burada olduğu gibi .keygrip


1
Ubuntu 14-16'daki diğer bir seçenek 'Parolalar ve anahtarlar' gui'sini kullanmaktır (bulmak için ssh için arama yapabilirsiniz). Hangi örneğin OpenSS anahtarlarını seçin, ardından tuşa sağ tıklayın ve sil'i seçin. Kaldırıldığını görmek için sisteminizi yeniden başlatmanız gerekebilir.
user3257693

2
Bu bilgi neden ssh-agentve ssh-addseçilen cevap hakkında? Orijinal poster istediğini söyledi remove the old SSH key directly on the server and upload a new one. ~/.ssh/authorized_keysUzak ana bilgisayarda düzenlemek istiyor gibi görünüyor .
H2ONaCl

1
Bu cevap, ssh yönlendirme etkin durumdayken ortaya çıkan bir sorunu çözmeme neden oldu. Ubuntu 16.04 makinesinden, tüm ssh kimlik bilgilerinin yönlendirildiği bir debian sisteme gitmek git clone, Ubuntu kutusundaki yapılandırma dosyasındaki sürüm yerine zincirdeki ilk anahtarı kullanıyordu. Kötü anahtar otomatik olarak emilir ve Debian kutusuna iletilirdi.
redfive

1
Bu arkada gerçek bir acı. Şirket projeleri üzerinde çalışıyorum ve başka bir şirkette çalışmak için sözleşme yapıyorum. Bu, her ikisini de yönetmeye zaman kazandırır. Umarım yakında bir düzeltme gelir!
joshlsullivan

1
Bu kimseye yardımcı olursa: id_rsave id_rsa.pubdosyaları tamamen silmeyi denedim ve anahtar hala görünüyordu . Gpg-agent'ın onları bir ~/.gnupg/sshcontroldosyada önbelleğe aldığı ortaya çıktı ; Onları oradan manuel olarak silmek zorunda kaldım.
Ryan Lue

10

Ssh ile ilgili bir işlem yürütmeye çalışıyorsanız ve aşağıdaki hatayı alırsanız:

$ git fetch
no such identity: <ssh key path>: No such file or directory

Eksik ssh anahtarını ssh aracısından aşağıdakilerle kaldırabilirsiniz:

$ eval `ssh-agent -s`  # start ssh agent
$ ssh-add -D <ssh key path>  # delete ssh key

9

Yanlış anlamadığım sürece .ssh, yerel makinenizdeki özel anahtarınızı içeren dizininizi kaybettiniz ve bu nedenle bir sunucuda bulunan ve anahtar tabanlı oturum açmaya izin veren ortak anahtarı kaldırmak istiyorsunuz. Bu durumda, .ssh/authorized_keyssunucudaki ana dizininizdeki dosyada saklanır . Bu dosyayı bir metin düzenleyicisiyle düzenleyebilir ve tanımlayabiliyorsanız ilgili satırı silebilirsiniz (tek giriş ise daha da kolay!). Umarım anahtar sunucuya tek erişim yönteminiz değildir ve giriş yapmak ve dosyayı düzenlemek için başka bir yolunuz vardır. authorised_keysDosyaya manuel olarak yeni bir ortak anahtar ekleyebilir veya kullanabilirsiniz ssh-copy-id. Her iki durumda da, sunucudaki hesabınız için şifre kimlik doğrulaması ayarlamanız veya sunucudaki authorized_keysdosyaya erişmek için başka bir kimlik veya erişim yöntemine ihtiyacınız olacaktır .

ssh-addssh aracısına kimliklerinizin yerel olarak yönetilmesini sağlayan kimlikler ekler ve "aracıya bağlantı SSH uzak oturumları üzerinden iletilir ve böylece kullanıcı ağın herhangi bir yerindeki kimliklerin verdiği ayrıcalıkları güvenli bir şekilde kullanabilir." (man sayfası), bu yüzden bu durumda ne istediğinizi sanmıyorum. Bildiğim kadarıyla bir ssh giriş yoluyla adı geçen sunucuya erişiminiz olmadan ortak anahtarınızı bir sunucuya almanın hiçbir yolu yoktur.


Bu dosyayı sildim ve hala bağlanabiliyorum. Bu yüzden kesinlikle burada yoktu ... Otomatik olarak eklenen bir anahtardı, ancak yine de hiçbir yerde mevcut değil.
Larry

5

Birliğimde "Parolalar ve Anahtarlar" uygulamasını açtım ve Güvenli Anahtarlar -> OpenSSH anahtarlarından istenmeyen anahtarları kaldırdım ve bunlar otomatik olarak ssh-agent -l'den de kaldırılmıştı .


2
Bu ayrıca onları ~/.ssh
dizinden

1

Bu hatanın hala Ubuntu 19.04'te mevcut olduğunu doğrulayabilirim. @VonC tarafından önerilen geçici çözüm, sürümüm için özetleyerek mükemmel çalıştı:

  • Sol üst köşedeki Etkinlikler sekmesini tıklayın
  • Gelen arama kutusuna "başlangıç ​​uygulamaları" yazmaya başlayın
  • "Başlangıç ​​Uygulamaları" simgesine tıklayın
  • Açılan kutuda gnome anahtarlık yöneticisi uygulamasını seçin (GUI'de tam adı hatırlayamıyorum, ancak yeterince ayırt edici) ve kaldırın.

Sonra ne yaptım ssh-add -Dtekrar denemek oldu, ve yeniden ssh-add -lbaşlattıktan sonra bana ajanın hiçbir kimliği vardır. Hala ssh-agentcini çalıştırdığımı doğruladım ps aux | grep agent. Bu yüzden GitHub ile en sık kullandığım anahtarı ekledim (ssh-add ~/.ssh/id_ecdsa ) ve her şey !

Şimdi normal işlemleri en sık kullandığım depomla yapabilirim ve ara sıra RSA anahtarını kullanan diğer veri havuzuna erişmem gerekirse, bunun için sadece bir terminal atarım export GIT_SSH_COMMAND="ssh -i /home/me/.ssh/id_rsa.pub". Çözüldü! Kredi, hatayı ve çözümü belirtmek için @VonC'ye gider.


1

Sisteminizde .ssh anahtarını kontrol edin veya etmeyin

  1. Klasöre gidin -> /Users/administrator/.ssh/id_ed25519.pub

Değilse

  1. Terminal'i açın.

Terminalde geçmiş

  1. Kullanıcıyı kontrol et -> ssh -T git@gitlab.com

Mevcut .ssh Anahtarını Kaldır

  1. Mevcut .ssh Anahtarını Kaldır -> rm ~ / .ssh / github_rsa.pub

Yeni oluşturmak

  1. Yeni .ssh Anahtarı Oluştur -> ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

  2. Genel anahtar "/Users/administrator/.ssh/id_ed25519.pub" içine kaydedildi .

  3. Genel anahtar kaydedilen yolu açın.
  4. .Ssh Anahtarını -> GitLab Hesabı -> Ayarlar -> SSH Anahtarı -> Anahtar ekle
  5. Terminalden tekrar test edin -> ssh -T git@gitlab.com

0

Benim için çözüm (OpenSuse Leap 42.3, KDE) klasörü yeniden adlandırmaktı ~/.gnupg önbelleğe alınmış anahtarları ve profilleri içeren . KDE oturumunu kapattıktan / oturum açtıktan sonra ssh-add / agent yeniden çalışıyor ve klasör sıfırdan oluşturulmuş, ancak eski anahtarların hepsi yok.

Diğer yaklaşımlarla başarılı olamadım.

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.