PuTTYgen(Windows)を使用して生成されたSSH鍵ペアを、ssh-agentおよびKeychain(Linux)で使用される鍵ペアに変換する方法


464

私はPuTTYgenを使用してキーペアを生成し、Pageantを使用してログインしているため、システムの起動時にパスフレーズを1回入力するだけで済みます。

Linuxでこれを実現するにはどうすればよいですか?私は聞いたkeychainが、私はそれが別のキーペアの形式を使用していることを聞く-私は私のWindowsキーを変更したくないと私はシームレスにWindowsとLinuxの両方で同じように接続することができれば、それはいいだろう。


Linuxでのキーの使用にも問題はないはずです...それらをコピーして、承認されたキーにpubを追加するだけです...確かに私はあなたの質問を完全に理解していません。
ランドールハント

17
いいえ、あります。PuttyGenとssh-agentで使用されるキー形式が異なり、それらを明示的に変換する必要があることを知っています。以下のKalebの詳細な回答を参照してください。
TCSGrad 2010

回答:


714

puttygen秘密鍵のOpenSSH互換フォーマットへのエクスポートをサポートしています。その後、OpenSSHツールを使用して公開鍵を再作成できます。

  1. PuttyGenを開く
  2. ロードをクリックします
  3. 秘密鍵をロードする
  4. Conversions->Export OpenSSH秘密鍵に移動してエクスポートします
  5. 秘密鍵を~/.ssh/id_dsa(またはid_rsa)にコピーします。
  6. 以下を使用して、公開鍵のRFC 4716バージョンを作成します。 ssh-keygen

    ssh-keygen -e -f ~/.ssh/id_dsa > ~/.ssh/id_dsa_com.pub
    
  7. RFC 4716バージョンの公開鍵をOpenSSH形式に変換します。

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

詳しくはこちらこちらをご覧ください。


12
取得人のためにIt is required that your private key files are NOT accessible by others、私が実行していたようなエラーをcd ~/.sshしてchmod 700 id_rsa
専門家の

77
chmod 600 id_rsaを意味します。ファイルは実行可能である必要はありません。:)
sig11

2
この答えは、(特にgitアクセス用の)パスワードなしのキーを使用してWindowsコマンドラインからsshを取得するための鍵でした。以前に見ていたら、何時間もの苦痛を節約できただろう!ありがとう!
cori 2013年

2
puttygenはCLIから実行できますか?
CMCDragonkai 2014年

20
これは新しいものだと思いますが、puttygenで秘密鍵を開くと、UIにOpenSSH互換でコピー可能な公開鍵の文字列が自動的に表示されます。
UpTheCreek

161

ユーザーの公開鍵がPuTTYスタイルの形式である場合は、次のように標準のopenssh形式に変換できます。

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

参考文献

記事のコピー

私はこれを忘れてしまうので、ここに書きます。オタク以外の人は、そのまま歩き続けます。

Windowsでキーを作成する最も一般的な方法は、Putty / Puttygenを使用することです。Puttygenは、Linux秘密鍵をPutty形式に変換するための優れたユーティリティを提供します。ただし、対処されていないのは、puttygenを使用して公開鍵を保存すると、Linuxサーバーでは機能しないことです。Windowsはいくつかのデータを異なる領域に配置し、改行を追加します。

解決策:puttygenで鍵ペアを作成するときに公開鍵画面が表示されたら、公開鍵をコピーして、拡張子.pubが付いたテキストファイルに貼り付けます。このようなシステム管理者のイライラの時間を節約できます。

ただし、システム管理者は、キーが見つからないこと、パスワードを試すことを除いて、認証ログにエラーメッセージをスローしない不安定なキーファイルを必ず取得します。他の全員のキーが正常に機能していて、このキーをユーザーに15回送り返したとしても。

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

既存のputtygen公開鍵をOpenSSH形式に変換する必要があります。


2
また、Comment:行からユーザーのコメントをコピーして、スペースで区切って新しいキーと同じ行に貼り付けることもできます。ssh-keygenがデフォルトでこれを行わない理由はわかりません。
トビア2017

2
これは私のエラーを与える:decode blob failed: invalid format
クリスStryczynski

元の記事を読んだ場合、重要な詳細は、このアプローチが機能するのは、UIを通過するときにputtygenからキーをコピーした場合のみであり、puttygenによって生成されたファイルから既に生成されたキーを変換しないことです。
slm 2018

同じツールを使用して別の方法で変換できますか?
OlleHärstedt、2018

はい、あなたが見ているように見えます:ssh-keygen -e -f openssh_key.pub> putty.pub
Erik

148

次の図に示すように、PuTTYgenの新しいバージョン(私のバージョンは0.64)では、Linuxシステムに貼り付けられるOpenSSH公開鍵を.ssh/authorized_keysファイルに表示できます。

ここに画像の説明を入力してください


7
この回答では、OpenSSH形式を使用するリモートでキー認証を設定する方法について説明します。しかし、Linux クライアントでPuttyで生成されたキーを使用するには、この答えでは不十分です。私は受け入れられた答えに従って、それは素晴らしく機能しました。
wberry 16

52

あるいは、PuTTY形式の鍵ファイルから秘密鍵と公開鍵を取得したい場合はputtygen、* nixシステムで使用できます。ほとんどのaptベースのシステムputtygenputty-toolsパッケージの一部です。

PuTTY形式のキーファイルから秘密キーを出力する:

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

公開鍵の場合:

$ puttygen keyfile.pem -L


何らかの理由でWindowsボックスでこれを実行する必要があり(すべてのキーを* nixに安全に転送できない)、GUIを使用して非常に多くのキーを使用するのが面倒な場合は、CygwinでUnixソースをコンパイルしてみてください。そのputtygen.exeは、上記のようにCLI「バッチモード」を提供します。
Toddius Zho 2013

2
OSX:brew install putty
JuhaPalomäki2016年

1
これは逆にする必要があります:puttygen inppk -O private-openssh -o outpemand puttygen inppk -L(or ssh-keygen -y -f outpem
dave_thompson_085

27
sudo apt-get install putty

これにより、puttygenツールが自動的にインストールされます。

SSHコマンドで使用するPPKファイルを変換するには、ターミナルで次のコマンドを実行します

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

次に、SSH経由で接続できます。

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


これは、実際には@John Jawed
Martin Prikryl

引数は、それらが何を表すかを説明します。+1
danronmoon 2017

すごい!これは機能します。さらに、Macosにパテをインストールするには:brew install putty
Dylan B

14

LinuxのPuttyからLinuxのRemminaに移行していたときに、最近この問題が発生しました。それで.putty、8年間使用しているので、ディレクトリにPuttyのPPKファイルがたくさんあります。このために、forすべてのファイルを実行するbashシェルの簡単なコマンドを使用しました。

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;

非常に迅速かつ要点として、パテが持っていたすべてのファイルに対して仕事が完了しました。パスワード付きのキーが見つかると、停止し、最初にそのキーのパスワードを要求してから続行します。


2
私のような怠惰なPPLの場合、ubuntuでputtygenを取得するためのコピーと貼り付けがあります。sudoapt-get install putty-tools
Lennart Rolland

「シンプル」-複雑に見えるのは嫌です!
Alex Jansen


6

TCSgradが求めていたのは(数年前)、LinuxをWindowsマシンのように動作させる方法でした。つまり、秘密鍵の復号化されたコピーを保持するエージェント(ページェント)が存在するため、パスフレーズを一度入力するだけで済みます。次に、sshクライアントのputtyは、自分の公開鍵が「承認済み」としてリストされているマシンにパスワードプロンプトなしでログインできます。

これの類似物は、sshクライアントとして機能する Linux です。 TCSgradが「ssh host」と入力したときにsshコマンドが自分の秘密鍵を取得してパスワードの入力を求められずに進むように、復号化された秘密鍵を保持するエージェントを持っていることです。もちろん、ホストは公開鍵を〜/ .ssh / authorized_keysに保持している必要があります。

このシナリオのLinuxアナログは、ssh-agent(ページェントアナログ)とssh-add(ページェントに秘密鍵を追加するアナログ)を使用して実現されます。

私のために働いた方法は使用することでした:$ ssh-agent $ SHELLその$ SHELLは、エージェントを実行して実行し続けるために必要な魔法のトリックでした。私はネット上のどこかでそれを見つけ、壁に頭をぶつけて数時間を終えました。

これで、ページェントの類似物が実行されました。キーがロードされていないエージェントです。

$ ssh-addを単独で入力すると、(デフォルトで)〜/ .sshのデフォルトのIDファイルにリストされている秘密鍵が追加されます。

より詳細なWeb記事はここにあります


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.