Puttyの秘密鍵を用いてターミナルで接続

投稿者: | 2021-04-22

 Windowsを使う場合は、基本的にグラフィックス画面を利用します。この場合は、Puttyと言ったツールを使って、秘密鍵を用いるリモート接続ができます。Windowsのアップグレードのおかけて、WSL2を利用できるようになりました。WSL2をインストールした後に、Ubuntuを導入しました。しかし、Ubuntuを使って、リモート接続を試したところに、一連のエラーが発生し、うまく接続できなかったです。いろいろ調べて、やっと解決できました。

 Ubuntuのターミナルを使って、秘密鍵を用いって、リモート接続するコマンドは以下の通りです。

$ssh -i paivate-key.ppk userid@hostname

 上記のコマンドを実行すると、以下のエラーが表しました。

Load key "private-key.ppk": invalid format
userid@hostname: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

 このエラーの意味はPuttyの秘密鍵をそのままで利用できない、Ubuntuのターミナルで利用できるフォーマットにコンバートする必要です。コンバートの方法は以下の図を参照してください。

Puttygenで秘密鍵をコンバート

 Puttygenを実行し、メニューの「File」->「Load private key」で「private-key.ppk」をロードします。その次に、メニューの「Conversions」->「ExportOpenSSH key」でUbuntuのターミナルを使える秘密鍵をエクスポートします。その後、新しい秘密鍵のパーミッションを「600」に設定します。

 エクスポートされた秘密鍵を使って、Ubuntuのターミナルでリモートで接続すると、以下のエラーが表示されました。

sign_and_send_pubkey: no mutual signature supported

 上記のエラーの原因は、新しいOpenSSHでは、古い暗号方式を拒否したようです「ssh-dss」。解決方法は、「~/.ssh/config」に以下を追記して回避します。

~/.ssh/config
Host hostname
  HostKeyAlgorithms ssh-dss
  PubkeyAcceptedKeyTypes ssh-dss

 Cipherで暗号化方式を指定している場合は「+」をつける必要です。

~/.ssh/config
Host hostname
  HostKeyAlgorithms +ssh-dss
  PubkeyAcceptedKeyTypes +ssh-dss

 以上のようにすると、Ubuntuのターミナルで無事にリモート接続ができました。