
PuTTY で公開キーと秘密キーの 2 つのキーを生成しました。Windows でこのソフトウェアを使用すると、通常どおりサーバーに接続できます。
次に、それらのファイルを Ubuntu マシン (21.04) にコピーし、秘密鍵を読み込んでログインしようとしましたが (PuTTY を開き、user@hostname
SSH > Auth で秘密鍵を書き込んでから読み込みます)、次のエラーが表示されてサーバーに拒否され、接続できません。
Unable to load key file '~/private_key.ppk' (PuTTY key format too new).
そして、次のようなウィンドウが表示されます:
No supported authentication methods available (server sent: publickey)
したがって、最初のエラーが示唆するように、PuTTYgen を介して秘密鍵を openssh PEM 形式に変換し、そのファイルを SSH/Auth にロードした後、次の前に「サポートされていません」というメッセージが残ります。
Unable to use key file '~/private_key_openssh' (OpenSSH SSH-2 private key (old PEM format) ).
Ubuntu でこれらのキーを使用する方法はありますか? Openssh 経由でしょうか?
役に立つ情報:
- Ubuntuの新しくインストールされたバージョン
- パティ 0.74
試してみた時の出力ssh -i ~/.ssh/private_key.ppk user@hostname
キー「~/.ssh/private_key.ppk」をロードします: 無効な形式 user@hostname: 権限が拒否されました (publickey)。
答え1
Adonis と Thomas の回答/コメントは基本的に正しいですが、実際にこれを機能させるために必要な詳細がいくつか欠けています。コメントするには評判が足りないので、この回答で詳細を追加します。
Putty PPK を OpenSSH 形式にエクスポートします。
これを行うには、PuttyGenを開き、秘密鍵をロードし、「変換」メニューに移動して「OpenSSHキーのエクスポート」を選択します。
Ubuntu(または派生版)でOpenSSHキーを使用する
SSH に直接使用する場合、Adonis が述べたように使用できます。しかし、ソース コントロール システムで使用する場合など、間接的に必要な場合はどうでしょうか。
Linux の ~/.ssh フォルダにコピーします。Linux ボックスで SSH を使用したことがない場合は、このフォルダを作成する必要があります。.ssh ディレクトリを作成するときは、chmod 0700 ~/.ssh
ssh ツールがそのディレクトリが本当にプライベートであると認識するようにする必要があります。
Windows からキー ファイルをコピーした場合は、ターミナルを開いて ~/.ssh フォルダーに移動し、 を実行しますchmod 400 [private key file name]
。これは、デフォルトのアクセス許可 (Windows からコピーした場合) が 770 になるために必要です。SSH ユーティリティは、このアクセス許可では許可が多すぎるためキーを無視すると通知します。残念ながら、問題の解決方法は直接示されていませんが、アクセス許可 400 (つまり、「自分は読み取り可能だが、他の人は読み取り不可」) にすると、問題は解決します。
次に、ターミナルで を実行しますeval $(ssh-agent)
。これにより、ローカル SSH エージェントが開き、ソース管理などの他のプログラムで取得できるキーを追加できるようになります。
最後に、 を実行しますssh-add ~/.ssh/[private file key name]
。権限を設定することを忘れなければ、正常に動作し、SSH キーを使用して git/hg などを使用できるはずです。
答え2
接続が成功しました!
Thomas Ward の提案どおり、Windows 上の PuTTYgen に private_key ファイルをロードし、公開キーをファイルにコピーすることがauthorized-keys
最初のステップとして機能しました。
さらに、最初のオプションである openssh 形式として private_key ファイルを private_OpenSSH ファイルにエクスポートし、それを ~/.ssh ディレクトリに移動して、次のように権限を変更します。
chmod 400 private_OpenSSH
ようやく接続できました:
ssh -i ~/private_OpenSSH user@hostname