LoginSignup
2
1

More than 1 year has passed since last update.

SSH で RSA/SHA1 が使えなくなったので対策する

Posted at

はじめに

SSH のアップデートにより、RSA/SHA1 暗号方式の鍵 (ssh-rsa) がデフォルトで無効になったようです1

Ubuntu 22.04.1 LTS (Jammy Jellyfish) にアップグレードすると自動的に SSH もアップデートされるため、対応が必要な場合があります。

解決策としては

  • RSA/SHA1 暗号ではない鍵 (デフォルトで使用可能な暗号方式の鍵) を作り直し、それと入れ替える (推奨)
  • RSA/SHA1 暗号鍵が引き続き使用できるように許可する

のいずれかの対応が必要です。

この記事ではそれぞれの解決策での対応方法について説明します。

OS をアップグレードしたら SSH できなくなった、という事態を避けるために、事前に対策を行っておくことをおすすめします

鍵が利用可能か確認

これからアップデートを検討される方は、そもそも現状の鍵がアップデート後もそのまま使えるかどうかを知りたいかと思います。

対象の鍵 (公開鍵) に対して、以下のコマンドを実行します。~/.ssh/id_ed25519 の部分には対象の公開鍵のファイルパスを指定します。

Shell
ssh-keygen -l -f ~/.ssh/id_ed25519.pub

RSA の SHA256 や、ECDSA、ED25519 などになっていれば、引き続き利用可能です。そのため、対応の必要はありません。

RSA の SHA1 だった場合は対応の必要があります。

RSA/SHA1 暗号ではない鍵 (デフォルトで使用可能な暗号方式の鍵) を作り直し、それと入れ替える (推奨)

RSA/SHA1 暗号方式を鍵を利用している場合、アップデート後にデフォルトでは使えなくなりますので、デフォルトで利用可能な新しい鍵に入れ替えます。

macOS / Linux

せっかくなので今回は、RSA 暗号より強固とされている、楕円曲線暗号の一種である ed25519 鍵を生成してみようと思います。

まずは以下のコマンドを実行します。

Shell
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519

~/.ssh/id_ed25519 の部分は保存先のファイルパスです。必要に応じて変更してください。

以下のメッセージが表示されたら、パスフレーズを入力します。

Shell
Generating public/private ed25519 key pair.
Enter passphrase (empty for no passphrase):

パスフレーズは鍵を使用する際に入力するパスワードのようなものです。

何も入力せずにエンターキーを押すとパスフレーズを設定せずに鍵を生成することもできますが、一般的にパスフレーズは設定することが推奨されている ようです。

なお、パスフレーズは OS の鍵保管庫 (macOS であればキーチェーン) に登録しておけば SSH する際に毎回パスフレーズを入力する必要はありません。

以下のメッセージが表示されたら先ほどのパスフレーズをもう一度入力します。

Shell
Enter same passphrase again:

ここで設定したパスフレーズは忘れないようにしてください

これで鍵が生成できました。ssh-keygen コマンド実行時にファイルパスを ~/.ssh/id_ed25519 とした場合は、公開鍵ファイルパスは ~/.ssh/id_ed25519.pub となります。この公開鍵の中身をコピーして、サーバの ~/.ssh/authorized_keys にペーストします。

これで SSH できるようになります。

iOS Shortcuts

iOS Shortcuts には Run script over SSH というアクションがあり、たとえば Siri に話しかけて SSH 経由でサーバに任意のコマンドを実行させたりすることができます。

この際の SSH 鍵方式に、ed25519 と RSA があるのですが、RSA を選択すると RSA/SHA1 暗号鍵を許可しない限り弾かれてしまいます。

そこで、今まで RSA を使っていた場合は ed25519 に入れ替えます。

まず、適当なショートカットで Run script over SSH アクションを追加します。"Authentication" の部分は "SSH Key" にしておきます。

"SSH Key" の項目を選択すると鍵の情報が出てきます。ここに "Generate New Key" という項目があるのでこれをタップします。

鍵の種類で ed25519 と RSA が選択できるようになっているので、ed25519 を選択します。コメントは必要に応じて変更してください。

"Done" を押して鍵を (再) 生成します。

再生成する場合は警告が表示されます。

これは iOS Shortcuts 内で使われているすべての鍵が変更されることを意味しています。逆にいうと、適当なショートカットで一回変更すればすべてのショートカットに影響するので、一つずつ変更していく必要はありません。

鍵の (再) 生成ができたら、もう一度、鍵の情報を表示するページに遷移して、"Copy Public Key" をタップします。

クリップボードに公開鍵がコピーされるので、あとはこれをサーバの ~/.ssh/authorized_keys にペーストします。

iOS のクリップボードからサーバの ~/.ssh/authorized_keys にペーストする方法ですが、以下の方法を参考してみてください。

  • Apple デバイス間のクリップボード共有機能を利用する
    • iPhone (iPad) と Mac で同じ Apple ID を利用している場合は、クリップボードが共有されます
  • 一時的にクラウドのどこかに公開鍵をアップロードしておき、それを PC でコピーしてサーバにペーストする

RSA/SHA1 暗号鍵が引き続き使用できるように許可する

別のアプローチとして、今まで通り RSA/SHA1 暗号鍵も使えるようにすることもできます。

ただし、あくまで推奨は上記で説明した RSA/SHA1 暗号方式ではない鍵に置き換える方法です。以下の方法は、どうしても RSA/SHA1 暗号鍵でなければいけない場合のみ検討してください。

/etc/ssh/sshd_config または /etc/ssh/sshd_config.d/*.conf に以下の 1 行を追加します。

/etc/ssh/sshd_config
PubkeyAcceptedAlgorithms=+ssh-rsa

SSH デーモンを再起動します。

Shell
sudo systemctl restart ssh

これで引き続き RSA/SHA1 が利用できるようになります。

さいごに

アップグレードしていきなり SSH できなくなると焦るので、事前に情報をチェックしておくことが重要だなと感じました。

参考

  1. RSA/SHA-256/512 は引き続き利用可能です。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1