PuTTYgen (Windows) kullanılarak oluşturulan SSH anahtar çiftlerini ssh-agent ve Keychain (Linux) tarafından kullanılan anahtar çiftlerine dönüştürme


464

PuTTYgen kullanarak anahtar çiftleri oluşturdum ve Pageant kullanarak giriş yapıyorum, böylece sistemim önyüklendiğinde parolamı yalnızca bir kez girmeliyim.

Bunu Linux'ta nasıl başarabilirim? Duydum keychainama farklı bir anahtar çifti biçimi kullandığını duydum - Windows anahtarlarımı değiştirmek istemiyorum ve hem Windows hem de Linux'ta aynı şekilde sorunsuz bir şekilde bağlanabilsem iyi olurdu.


Linux'taki anahtarları kullanırken herhangi bir sorun olmamalı ... Sadece onları kopyalayın ve pub'ı yetkili anahtarlara ekleyin ... ama kuşkusuz sorunuzu tam olarak anlamıyorum.
Randall Hunt

17
Hayır - PuttyGen ve ssh-agent tarafından kullanılan anahtar formatların farklı olduğunu ve açıkça dönüştürülmeleri gerektiğini çok fazla biliyorum - aşağıdaki Kaleb'in ayrıntılı cevabına bakın.
TCSGrad

Yanıtlar:


714

puttygenözel anahtarınızın OpenSSH uyumlu bir formata aktarılmasını destekler. Daha sonra ortak anahtarı yeniden oluşturmak için OpenSSH araçlarını kullanabilirsiniz.

  1. PuttyGen'i açın
  2. Yükle'yi tıklayın
  3. Özel anahtarınızı yükleyin
  4. Conversions->Export OpenSSHÖzel anahtarınıza gidin ve dışa aktarın
  5. Özel anahtarınızı ~/.ssh/id_dsa(veya id_rsa) konumuna kopyalayın .
  6. Ortak anahtarın RFC 4716 sürümünü kullanarak ssh-keygen

    ssh-keygen -e -f ~/.ssh/id_dsa > ~/.ssh/id_dsa_com.pub
    
  7. Genel anahtarın RFC 4716 sürümünü OpenSSH biçimine dönüştürün:

    ssh-keygen -i -f ~/.ssh/id_dsa_com.pub > ~/.ssh/id_dsa.pub
    

Daha fazla bilgi için buna ve buna bakın .


12
It is required that your private key files are NOT accessible by othersKoştuğum gibi hata alan cd ~/.sshvechmod 700 id_rsa
uzman

77
Yani chmod 600 id_rsa . Dosyanın yürütülebilir olması gerekmez. :)
sig11

2
Bu cevap benim için şifresiz tuşları kullanarak windows komut satırından ssh almanın anahtarı oldu (özellikle git erişim için). Bana kaydedilmiş olurdu saat daha önce sanki görmüşsün ağrı! Teşekkürler!
cori

2
Puttygen CLI'den uygulanabilir mi?
CMCDragonkai

20
Bunun yeni bir şey olduğunu varsayıyorum, ancak özel anahtarınızı puttygen'de açarsanız, otomatik olarak kullanıcı arayüzünde OpenSSH uyumlu, kopyalanabilir, genel bir anahtar dizesi gösterir.
UpTheCreek

161

Sahip olduğunuz tek şey, bir kullanıcının PuTTY stili biçiminde ortak bir anahtarsa, bunu aşağıdaki gibi standart openssh biçimine dönüştürebilirsiniz:

ssh-keygen -i -f keyfile.pub > newkeyfile.pub

Referanslar

Makalenin kopyası

Bunu unutmaya devam ediyorum, o yüzden buraya yazacağım. Geek olmayanlar, yürümeye devam et.

Windows'da bir anahtar yapmanın en yaygın yolu Putty / Puttygen kullanmaktır. Puttygen, linux özel anahtarını Putty formatına dönüştürmek için temiz bir yardımcı program sunar. Ancak, ele alınmayan şey, genel anahtarı puttygen kullanarak kaydettiğinizde linux sunucusunda çalışmadığıdır. Windows bazı verileri farklı alanlara yerleştirir ve satır sonları ekler.

Çözüm: Puttygen'de anahtar çiftinizi oluştururken ortak anahtar ekranına geldiğinizde, ortak anahtarı kopyalayın ve .pub uzantılı bir metin dosyasına yapıştırın. Böyle mesajlar okurken sysadmin saat hayal kırıklığı kurtaracak.

ANCAK, sysadmins, her zaman auth günlüğüne hiçbir hata mesajı atar wonky anahtar dosyasını almak, hiçbir anahtar bulunamadı, şifre çalışıyor olsun; herkesin anahtarları iyi çalışıyor olsa da, bu anahtarı 15 kez kullanıcıya geri gönderdiniz.

ssh-keygen -i -f keyfile.pub > newkeyfile.pub

Mevcut bir puttygen genel anahtarını OpenSSH biçimine dönüştürmelidir.


2
Ayrıca, kullanıcının yorumunu Comment:satırdan kopyalayıp boşlukla ayrılmış yeni anahtarla aynı satıra yapıştırmak isteyebilirsiniz . Neden ssh-keygen'in bunu varsayılan olarak yapmayacağını bilmiyorum.
Tobia

2
Bu bana bir hata veriyor:decode blob failed: invalid format
Chris Stryczynski

Orijinal makaleyi okursanız, kilit ayrıntı, bu yaklaşımın yalnızca UI'den geçerken puttygen'den anahtarı kopyaladığınızda işe yaramasıdır, puttygen tarafından üretilen dosyalardan zaten oluşturulmuş bir anahtarı dönüştürmez.
slm

Aynı aracı başka bir şekilde dönüştürmek için kullanabilir miyim?
Olle Härstedt

evet, şuna bakıyorsun: ssh-keygen -e -f openssh_key.pub> putty.pub
Erik

148

PuTTYgen'in daha yeni sürümleri (benimki 0.64'tür) .ssh/authorized_keys, aşağıdaki resimde gösterildiği gibi , dosyadaki linux sistemine yapıştırılacak OpenSSH genel anahtarını gösterebilir :

resim açıklamasını buraya girin


7
Bu yanıt, OpenSSH biçimini kullanan bir uzaktan kumandada anahtar kimlik doğrulamanın nasıl ayarlanacağını kapsar. Ancak bir Linux istemcisinde Putty tarafından üretilen bir anahtar kullanmak için bu cevap yetersizdir. Kabul edilen cevabı takip ettim ve harika çalıştı.
wberry

52

Alternatif olarak, PuTTY biçimli bir anahtar dosyasından özel ve genel anahtarları almak istiyorsanız puttygen* nix sistemlerinde kullanabilirsiniz. Çoğu apt tabanlı sistem puttygeniçin putty-toolspaketin bir parçasıdır .

PuTTY biçimli bir anahtar dosyasından özel bir anahtar çıktılamak:

$ puttygen keyfile.pem -O private-openssh -o avdev.pvk

Ortak anahtar için:

$ puttygen keyfile.pem -L


Herhangi bir nedenle bunu bir Windows kutusunda YAPMALISINIZ (tüm anahtarları güvenli bir şekilde * nix'e aktaramazsanız) ve GUI'yi kullanan çok fazla anahtarınız hantalsa, Unix kaynağını Cygwin altında derlemeyi deneyin. Bu puttygen.exe size yukarıda açıklandığı gibi CLI "toplu mod" verecektir.
Toddius Zho

2
OSX:brew install putty
Juha Palomäki

1
Bu tersine çevrilmelidir: puttygen inppk -O private-openssh -o outpemve puttygen inppk -L(veya ssh-keygen -y -f outpem)
dave_thompson_085

27
sudo apt-get install putty

Bu, puttygen aracını otomatik olarak yükleyecektir.

Şimdi SSH komutuyla kullanılacak PPK dosyasını dönüştürmek için terminalde aşağıdaki komutu çalıştırın

puttygen mykey.ppk -O private-openssh -o my-openssh-key

Ardından, SSH ile şu yollarla bağlanabilirsiniz:

ssh -v user@example.com -i my-openssh-key

http://www.graphicmist.in/use-your-putty-ppk-file-to-ssh-remote-server-in-ubuntu/#comment-28603



Argümanlar neyi temsil ettiklerini açıklıyor. +1
danronmoon

HARİKA! Bu çalışıyor. Buna ek olarak, Macos üzerine macun kurmak için: brew install macun
Dylan B

14

Linux için Putty'den Linux için Remmina'ya geçerken bu sorunu yaşadım. Bu yüzden .putty8 yıldır kullandığım dizinimde Putty için çok sayıda PPK dosyası var. Bunun foriçin bash kabuk için tüm dosyaları yapmak için basit bir komut kullanılır :

cd ~/.putty
for X in *.ppk; do puttygen $X -L > ~/.ssh/$(echo $X | sed 's,./,,' | sed 's/.ppk//g').pub; puttygen $X -O private-openssh -o ~/.ssh/$(echo $X | sed 's,./,,' | sed 's/.ppk//g').pvk; done;

Çok hızlı ve noktaya kadar, macunun sahip olduğu tüm dosyalar için işi yaptım. Şifreli bir anahtar bulursa, durur ve önce o anahtarın şifresini ister ve sonra devam eder.


2
Benim gibi tembel ppl için buraya ubuntu üzerinde PuTTYgen almak için copy-paste geçerli: sudo apt-get macun-araçları yüklemek
Lennart Rolland

"basit" - Karmaşık görmek nefret ediyorum!
Alex Jansen

8

Linux altında anahtarlarınızı oluşturmak ve anahtarları PuTTY formatına dönüştürmek için PuTTYgen kullanmak daha kolaydır.

PuTTY SSS: A.2.2


14
Ne yazık ki kullanmak zorunda olduğunuz anahtarlarınız varsa bu bir seçenek değildir.
uzman

6

TCSgrad'ın sormaya çalıştığı (birkaç yıl önce) Linux'un Windows makinesinde olduğu gibi nasıl davranacağını düşünüyorum. Yani, özel bir anahtarın şifresi çözülmüş bir kopyasını tutan bir ajan (pageant) vardır, böylece parolanın sadece bir kez girilmesi gerekir. Daha sonra, ssh istemcisi, macun, genel anahtarının parola istemi olmadan "yetkili" olarak listelendiği makinelerde oturum açabilir.

Bunun analogu, ssh istemcisi gibi davranan Linux'un şifresi çözülmüş bir özel anahtarı tutan bir aracıya sahip olmasıdır, böylece TCSgrad "ssh host" yazdığında ssh komutu özel anahtarını alır ve parola sorulmadan gider. ev sahibi, elbette, genel anahtarı ~ / .ssh / yetkili_anahtarlarında tutmalıdır.

Bu senaryonun Linux analogu, ssh-agent (pageant analogu) ve ssh-add (pageant'a özel bir anahtar eklemek için analog) kullanılarak gerçekleştirilir.

Benim için çalışan yöntem kullanmak oldu: $ ssh-agent $ SHELL Bu $ SHELL ajan çalıştırmak ve çalışmaya devam yapmak için gereken sihir oldu. Ağda bir yerde buldum ve birkaç saat kafamı duvara dayak attı.

Artık pageant analogu var, anahtarsız bir ajan var.

Kendi başına $ ssh-add yazıldığında (varsayılan olarak) varsayılan kimlik dosyalarında listelenen özel anahtarlar ~ / .ssh içinde eklenir.

Daha fazla ayrıntı içeren bir web makalesi burada bulunabilir


0

PPK → PuttyGen & Docker ile OpenSSH RSA.

Özel anahtar:

docker run --rm -v $(pwd):/app zinuzoid/puttygen private.ppk -O private-openssh -o my-openssh-key

Genel anahtar:

docker run --rm -v $(pwd):/app zinuzoid/puttygen private.ppk -L -o my-openssh-key.pub

Ayrıca bkz. Https://hub.docker.com/r/zinuzoid/puttygen

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.