【Ubuntu20】OSをバージョンアップする

ネコニウム研究所

PCを利用したモノづくりに関連する情報や超個人的なナレッジを掲載するブログ

【Ubuntu20】OSをバージョンアップする

2021-12-14 |

Ubuntu を 16.04 LTS から 20.04.3 LTS へアップグレードしたい!

推奨されてないらしいんだけど、リモートでやります。

環境

  • Ubuntu 16.04 LTS(バージョンアップ前)
  • Ubuntu 20.04.3 LTS(バージョンアップ後)

手順書

現在のバージョンを確認する

一応、下記のコマンドを実行して、現在、稼働している OS のバージョンを確認しておく。

cat /etc/os-release

OS をバージョンアップする

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade

# do-release-upgrade を実行する前に再起動を求められるので、先に再起動しておく。
sudo reboot

do-release-upgrade

バージョンアップ完了まで結構な時間がかかる。私の環境では 1 時間前後かかった。
何回か Enter 待ちや Y/N 確認があるので対応する。

それ以外にも Package configuration の確認(sshd や samba など)がある。
show the differences between the version でバージョン間の違いを確認して、更新しても良ければ install the package maintainer's version を選択する。現在の設定を維持する場合は keep the local version currently installed を選択する。
よく分からなければ、一旦 keep the local version currently installed を選択して法が良いかもしれない。
私は、ろくに確認せずに sshd_config を更新したら、OS のバージョンアップ後にリモート接続できなくなって焦った。こういうことがあるからリモートでのバージョンアップは推奨されてないのかもしれない。

あとは、しばらく待つ。

再起動後に OS のバージョンを確認する

バージョンアップが完了すると OS が再起動される。

再起動後に OS がバージョンアップされてるかバージョンを確認する。

cat /etc/os-release

以上です。

トラブルシューティング

OS のバージョンアップ後にリモート接続できなくなった

私の経験談なのですが、一応、解決したので原因と思われるものを載せます。

原因 1: sshd_config が更新されて設定が変わってしまってる

OS のバージョンアップ中の Package configuration の確認で sshd_config を install the package maintainer's version で更新すると sshd_config がデフォルトの設定に戻される。
SSH のポート番号を変えている場合は、デフォルトの 22 に戻ってしまってるのでこれが原因の可能性が高い。

/etc/ssh/sshd_config を編集して、元の設定に戻す。
編集後、ファイルを保存して、下記のコマンドで ssh を再起動する。

sudo /etc/init.d/ssh restart

原因 2: 古いバージョンの putty を使ってリモート接続しようとしてる

私は Windows で putty を使ってリモート接続することが多いのですが、下記のメッセージが putty 上に表示されリモート接続できませんでした。

FATAL ERROR: Couldn’t agree a key exchange algorithm (available: curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521)

鍵交換のアルゴリズムが対応してない!的なことみたい。
Ubuntu 20 では古い鍵交換のアルゴリズムでは SSH 認証できなくなったようだ。

これは新しい putty を使えば解決できる。
下記から新しい putty をダウンロードしよう。
putty.zip に最新版の putty を含む puttygen などのツールも入ってるのでこれが良いと思う。

putty - https://www.putty.org/

あと、これはひょっとしたら必要ないかもしれないけど、鍵を念のため作り直した。

おまけ: putty 用の秘密鍵を作る

Git Bash で鍵を作成した後に秘密鍵を puttygen で putty 用の鍵に変換する。

Git Bash を使って鍵を作る手順は、下記の記事を参考してね。

【CentOS7】SSH認証する | ネコニウム研究所

上記の記事のように鍵作成時にオプション -b でビット数を変更してる場合は、Number of bits in a generated key を鍵作成時指定したビット数に修正する。

Load an existing private key file の行の Load をクリックして Git Bash で作った秘密鍵を選択する。(拡張子のフィルタを All Files にしないと表示されながち)

正常に読み込まれると Successfully imported foreign key ...ごにょごにょ と表示される。

Save the generated key の行の Save private key をクリックして、putty で使う秘密鍵を保管する。

おまけ: WinSCP も新しいバージョンを使う

Ubuntu で古い鍵交換のアルゴリズムによる SSH 認証ができなくなったという影響は、WinSCP という SCP、SFTP 対応の FTP クライアントにも及んでる。
こちらも putty と同じく、新しいバージョンの WinSCP を使えば解決できる。下記のサイトより新しいバージョンの WinSCP をダウンロードできる。

WinSCP - https://winscp.net/

まとめ

Ubuntu に限らずなんですが、OS の大きなバージョンアップっていろいろ起きちゃいますね。