ubuntu22.04に秘密鍵を使って接続する

先日、Google Cloudのインスタンス作成時に、OSとしてubuntu22.04が追加されていました。そこで20.04の時と同様にしてSSH接続の設定をしていたらログインできませんでした。接続ソフトにはTeraTermを使用します。設定ミスがあると思い何度かやり直しましたが接続できません。まだ、ubuntu22.04がリリースされて間もないのでGoogle Cloudがなにかしらの理由で対応してないと勝手に考えて対処せずにいました。
少し時間が経過して、Oracle Cloudでも試しましたが接続が出来ません。
今度は接続できない理由を調べているとubuntu22.04の仕様が変更されていて接続できないことがわかったので対処します。
どうやら、22.04ではssh-rsaがデフォルトで無効のようです。LAN内では鍵を使用せずパスワードでログインしていたので盲点でした。

それでは接続できるように問題を解決していきましょう。
自宅のWindows端末で作業します。PowerShellを開いてコマンドを入力します。Oracle Cloudではインスタンス作成時に公開鍵と秘密鍵を保存することができます。

ssh -i 秘密鍵の存在するパス+鍵のファイル名 [email protected]外部IPアドレス

実際の例
ssh -i C:UsersminokOneDriveドキュメントoraclessh-key.key [email protected]

鍵の場所が複雑な階層にある場合は、一度エクスプローラを開いてアドレスをテキストとしてコピーしておきます。もしくはCドライブ直下など簡単な場所にファイルを置いておきます。下記のメッセージが表示されたら「yes」と入力します。

ECDSA key fingerprint is SHA256:
Are you sure you want to continue connecting (yes/no/[fingerprint])?

ログインしたらルートに切り替えて、sedコマンドを入力します。このコマンドは文字列を全置換したり、行単位で抽出したり、削除したり、いろいろなテキスト処理をします。

sudo su -
sed -i '1s/^/PubkeyAcceptedAlgorithms=+ssh-rsan/' /etc/ssh/sshd_config

最後に書き換えた内容を反映するためSSHサービスを再起動します。

systemctl restart ssh.service

これでTeraTermで鍵を使いログインできるはずです。

教育

Posted by admin