Azureの仮想マシン構築時に、RockyLinux8を入れたつもりが、RockyLinux9でした。
※ 色々試した訳ではないので、Microsoft側のOSイメージのリンクミスなのか、画像の表示ミスなのかは不明です
※ 2022/10/13 21:40(JST)現在、イメージは正しく差し変わりました。
※ やはり、RockyLinux8で動かしたいと思ったので、再度イメージ確認していたところ、イメージ選択表示文言が変わっていたので、
再インストールしてみたところ、RockyLinux8になりました!
RockyLinux9のイメージが変更されているか(RSA鍵でログインできるのか)未確認の為、
一応、以下の情報は残しておきます。
出来る限り安価にする為に、こちらを選択しました。
インストール完了すると、
RockyLinux8を選択したのに、Linux (Rocky 9.0) と表示されている。
しかも、TeratermでSSHログイン(鍵認証)を行ってもログイン出来ない!!
【状況】
Teratermから鍵認証(仮想マシン構築時に作成)を使ってSSHログイン操作を行った。
IDとパスフレーズ(なし)と鍵ファイルを指定してログインしようとしても、ログインが拒否される。
再度、鍵ファイルを指定しなおしたり、TeraTermを終了して立ち上がなおし、再度ログイン操作を行うも、
ログインが拒否される。
初期構築後に1回もリモートログイン出来ない事態となった。
【ログイン出来ないと調べようがないので・・・】
このような状況に陥った方、結果的に方法はいくつかあります。
(方法1) 仮想まシンを再構築する
鍵認証で入れないのなら、「認証の種類」で「パスワード」を選択して再構築する。
(方法2) RSAアルゴリズム以外の鍵を作成して、Azureの管理画面で、「SSH 公開キーのリセット」で置換する
(方法3) Azureの管理画面で、パスワードでSSHログイン出来るように変更する。
-「構成のみのリセット」を行い、「パスワードのリセット」を行う
(方法4) Teratermではなく、別のSSHクライアントソフトを利用する。
- 現段階(2022/10/09時点)での私の認識では、TeraTerm(4.106)は rsa-sha2-256/512に対応していないからではないかと想定
- Linux(Rocky8)から、Azureの仮想マシンにログインしたらログインできました。
Azureの管理画面で「パスワードのリセット」でパスワードを設定し、Azure管理画面のシリアルコンソールからログインして設定変更する方法もあります。
【ログインしてみたら・・・】
中身は、RockyLinux9になってました。
SSHログイン出来ない理由として、/var/log/secureには、
userauth_pubkey: key type ssh-rsa not in PubkeyAcceptedAlgorithms [preauth]
と出てて、ググりました。
ssh-rsaが無効になるから、鍵ファイルの変更など行わないといけないよ~みたいな記事がHit。
ただ、OpenSSHのバージョンは、openssh-server-8.7p1-8.el9
鍵アルゴリズム ssh-rsaが使用出来なくなるのは、openssh 8.8かららしい。
OpenSSH Release Notes
https://www.openssh.com/releasenotes.html
OpenSSH 8.8/8.8p1 (2021-09-26) の箇所
一応、openssh-server-8.7p1-8.el9 の Changeログを見るも、ssh-rsaには触れていない。
※ 最新は、openssh-server-8.7p1-10。 Changeログは8.7p1-8までを確認
https://rockylinux.pkgs.org/9/rockylinux-baseos-x86_64/openssh-8.7p1-10.el9_0.x86_64.rpm.html
【結論 - TeraTermでRSA鍵を使ってログインしたい】
色々な記事を参考に試行錯誤してみたが、以下の設定を行う事でTeraTerm(4.106)から接続できるようになった。
# update-crypto-policies --show
DEFAULT
→ DEFAULTを確認
# update-crypto-policies --set LEGACY
Setting system policy to LEGACY
Note: System-wide crypto policies are applied on application start-up.
It is recommended to restart the system for the change of policies
to fully take place.
# update-crypto-policies --show
LEGACY
→ LEGACYになった事を確認
# shutdown -r now
→ 再起動する
これでOS起動すると、TeraTerm(4.106)から、仮想マシン構築時に作成した鍵ファイルでログイン出来るようになった。
【セキュリティ的には・・・】
あくまで暫定対応で、セキュリティが低下している状態だと思う。
update-crypto-policies コマンド 「DEFAULT」-> 「LEGACY」に変更する前後で、
# sshd -T | grep -i "pubkeyacceptedalgorithms"
を見たら、「LEGACY」では、
ssh-rsa
ssh-rsa-cert-v01@openssh.com
が増えている。だから、TeraTermでRSA鍵(sha1?)でログイン出来るようになったと思う。
TeraTermがrsa-sha2-256/512に対応すれば、update-crypto-policiesの設定を元に戻してログイン可否を確認しようと思う。
【最後に】
RPM openssh-server-8.7p1-8.el9.x86_64 だったが、(デフォルトでは)既にssh-rsaが無効になっているように思われます。
本家では、8.8からとなっていますが、RPMでは往々にして既に対策済みだったりするので、一苦労しました。
ちなみにubuntuとかだと、sshd_configに「PubkeyAcceptedAlgorithms=+ssh-rsa」を入れるようです。
(最初は)RockyLinux9で、「PubkeyAcceptedAlgorithms=+ssh-rsa」を入れたのですが反映されません(SSHログイン出来ません)でした。
その後、update-crypto-policiesコマンドで解決
【参考サイト】
RedHat Customer Potal
https://access.redhat.com/discussions/5251241
OpenSSH
https://www.openssh.com/txt/release-8.8
WebARENA お客さまサポート
https://help.arena.ne.jp/hc/ja/articles/7134065589271-Tera-Term%E3%81%A7%E3%82%A4%E3%83%B3%E3%82%B9%E3%82%BF%E3%83%B3%E3%82%B9%E3%81%B8SSH%E6%8E%A5%E7%B6%9A-%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%8C%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%9B%E3%82%93-
TeraTerm
https://ja.osdn.net/projects/ttssh2/ticket/36109
その他、個人のブログサイト等