SSH秘密鍵から公開鍵を取得するにはどうすればよいですか?


444

によって生成さssh-keygenれたSSH秘密鍵には、公開鍵部分が含まれています。この公開鍵を秘密鍵から取得するにはどうすればよいですか?公開鍵を紛失したため、この公開鍵の内容をサーバーauthorized_keysファイルに入れる必要があり、新しい鍵ペアを作成したくありません。

別の言い回し:id_rsa.pubファイルからファイルを作成するにはどうすればよいid_rsaですか?


pbcopy > ~/.ssh/id_rsa.pubおっと。
ニックT

@NickT-pbcopyはMacOSXコマンドです。さらに、リブートしたり、ログアウトしたり、クリップボードに他のものをコピーした場合は役に立ちません。
jsnfwlr

回答:


681

サーバー障害:秘密キーから公開SSHキーを作成しますか?で答えを見つけました

オプション-yは公開鍵を出力します:

ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub

補足として、公開鍵のコメントは失われます。コメントが必要なサイト(Launchpad?)があるので~/.ssh/id_rsa.pub、コメントとキーデータの間にスペースを入れて最初の行にコメントを編集して追加する必要があります。公開鍵の例を以下に切り捨てて示します。

ssh-rsa AAAA..../VqDjtS5 ubuntu@ubuntu

SSHエージェント(バックグラウンドで実行され、何度もキーファイルパスフレーズを再入力する必要のないプログラム)にssh-add -L追加されたキーの場合、追加されたキーの公開キーをリストするコマンドを使用できます。エージェント(経由ssh-add -l)。これは、SSHキーがスマートカードに保存されている場合に役立ちます(秘密キーファイルへのアクセスは不可能です)。


1
秘密鍵ファイル~/.ssh/id_rsaはユーザー名に制限する必要があることに注意してください。$ sudo chmod 600 ~/.ssh/id_rsaルート認証情報を使用および入力して制限し、公開鍵ファイルを出力できます。そうしないと、無制限の秘密鍵ファイルの警告が表示されます。
マークミコフスキー

12
@MarkMikofskiは必要ありませんsudo、あなたはすでに秘密鍵を所有しているはずです。そうしないと、そもそも読むことができません。
-Lekensteyn

7
@Lekensteynありがとう、もちろんあなたは正しい!。また400、タイプ秘密鍵ファイルに書き込む必要がないため、推奨されます。修正されたコマンドは$ chmod 400 ~/.ssh/id_rsa
マークミコフスキー

秘密鍵のコメントは失われます。stackoverflow.com/questions/38290929/…を
weberjn

1
@weberjn秘密鍵(id_rsaファイル)にはコメントはありませんが、実際には公開鍵ファイル(id_rsa.pub)内のコメントは失われます。
Lekensteyn

14

これは、Windowsを使用してリモートコンピューターにSSHで接続するユーザー向けのソリューションです。AmazonAWSおよびGCEのクラウドイメージも含まれます。

(免責事項)

最近、このソリューションを使用して、GCEに新しく展開されたVMイメージにリモートログインしました。


使用したツール:

  1. プテューゲン
  2. WinSCP

実行する手順:

  1. puttygenを使用して公開/秘密キーペアを生成します。
  2. クラウドまたはリモートロケーションのサーバーに公開キーをアップロードします。

説明(方法):

  1. キー/ペアを生成するか、既存の秘密キーを使用します。

    秘密鍵を持っている場合:

    puttygenを開き、ロードボタンを押して、プライベートキー(* .pem)ファイルを選択します。

    秘密鍵がない場合:

    • puttygenを開き、
    • [パラメーター]セクションで目的のキータイプSSH2 DSA(RSAまたはDSAを使用できます)を選択します。パスフレーズフィールドを空白のままにすることが重要です。
    • [生成]を押し、指示に従って(公開/秘密)キーペアを生成します。

    サンプル鍵生成の写真

  2. 新しい「authorized_keys」ファイルを作成します(メモ帳で):

    PuTTY Key Generatorの「OpenSSH authorized_keysファイルに貼り付けるための公開鍵」セクションから公開鍵データをコピーし、鍵データを「authorized_keys」ファイルに貼り付けます。

    このファイルにテキストが1行しかないことを確認してください。

  3. Linuxサーバーにキーをアップロードします。

    • WinSCPを開き、
    • SFTPファイルプロトコルを選択し、SSH資格情報でログインします。
    • 成功すると、リモートマシンにホームディレクトリ構造が表示されます。

    authorized_keysファイルをリモートマシンのホームディレクトリにアップロードします。

  4. 適切な許可を設定します。

    作成し.sshたディレクトリを(それが存在しない場合)

    authorized_keysファイルを.sshディレクトリにコピーします(これにより、既存のauthorized_keysファイルが置き換えられます。これに注意してください)。

    ファイルが存在する場合は、このファイルの内容を既存のファイルに追加するだけです。

    コマンドを実行して権限を設定します。

    sudo chmod 700 .ssh && chmod 600 .ssh/authorized_keys
    

これで、毎回資格情報を入力しなくても、リモートマシンにSSH接続できます。

参考文献:

  1. WindowsでのSSHキーの生成とアップロード

  2. OpenSSHキー、証明書.pemおよび.pubを使用したパスワードなしの認証


:あなたのホームディレクトリがencrytedされている場合は、これを行うaskubuntu.com/questions/439184/...
devprashant

2
あなたの答えは質問とはあまり関係ありませんが、私はあなたの熱意のために投票します。
チュオングエン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.