ubuntuを 18.04LTS から 20.04LTS にアップグレードしてみた。

今まで ubuntu 18.04 LTSを使っていたのですが、1年後の2023年で長期サポートが切れるということとと、4月には 22.04 LTSが予定されていることもありアップグレードを実施しました。その時の手順です。

20.04 LTS へのアップグレード

アップグレードは「ソフトウェアの更新(黒い背景に A と書いてある)」でやりました。

一度、このアイコンをクリックしてパッケージを最新化します。最新化したあとに、もう一度このアイコンをクリックすると「20.04 LTSが入手可能です」というメッセージが表示されます。

「アップグレード..」のボタンを押下します。認証画面が表示されるのでパスワードを入力します。

リリースノートが表示されます。

「アップグレード」のボタンを押下します。アップグレードツールのダウンロードが始まります。

ツールのダウンロードが終わると自動でアップグレードが始まります。まずはアップグレードの準備です。

ここの途中で「サードパーティが提供するリポジトリを使わない設定にしました」というメッセージが表示されました。

「sources.list にあるサードパーティが提供するリポジトリを使わない設定にしました。アップグレード完了後、’ソフトウェアソース’ツールもしくはパッケージマネージャーを使って再び利用可能な設定にすることができます。」とあります。

「閉じる」ボタンを押下して先に進めます。アップグレード後に sources.list がどうなったのかを確認したので、これについては後述します。

新しいソフトウェア・チャンネルの設定に入ります。

しばらくすると「アップグレードを開始しますか?」のメッセージが表示されます。このメッセージの画面は大きかったため切り取って表示していますが、下部に「キャンセル」と「アップグレードを開始」のボタンがあります。「アップグレードを開始」のボタンを押下します。

いきなり「Lock screen disabled」と言われました。ロック画面は再起動するまで無効になるようです。「閉じる」ボタンを押下します。

新しいパッケージの取得になります。先ほどの「アップグレードを開始しますか?」のメッセージに書かれていたとおり、キャンセルができるのはここまでのようです。ダウンロードが完了してしまうとキャンセルボタンの表示はなくなります。

アップグレードのインストールが始まります。このアップグレードのインストール中にデスクトップ画面がBeaver(18.04のビーバー)からFossa(20.04のフォッサ)に変わりました。この工程は時間がかかります。待ちましょう。

やっとクリーンアップに入ります。

クリーンアップの途中で「サポートが中止されたパッケージを削除しますか?」と聞かれます。この画面も大きかったため切り取って表示をしていますが、下部に「そのまま」と「削除」のボタンがあります。

今まで使っていたアプリが動かなくなるのも困ると思い(このときは何が起こるかわからなかったので)「そのまま」の方のボタンを押下しました。

削除するものがないためか、割とすぐに「再起動してください」のメッセージが表示されました。

「すぐに再起動」のボタンを押下して、再起動が終わるのを待ちます。

このあと 20.04 LTS の設定内容や動作確認をしました。

リポジトリはどうなっていたか?

再起動が終わった後にアップグレードの途中で表示されていた「サードパーティが提供するリポジトリを使わない設定にしました」について確認をしました。

sources.list には nginx をインストールするために手動で追記をしていました。この元のファイルは sources.list.distUpgrade というファイル名で残されていました。
sources.list は /etc/apt 配下にあります。

これがアップグレードをしたら、このようになっていました。

コメントアウトされて「focalへのアップグレード時に無効化されました」の文言が追記されています。確かにメッセージのとおりです。「再び利用可能な設定にすることができます」ともありましたので、もう一度、設定し直すことにします。

リポジトリの再設定には「ソフトウェアとアップデート(紫色の背景に A と書いてある)」でやりました。

ソフトウェアとアップデートの「他のソフトウェア」タブを開きます。nginx のアップデートが無効化(チェックがない状態に)なっています。

ここにチェックを入れるのですが、アップグレードで無効化されているのは sources.list だけではなくて /etc/apt/sources.list.d ディレクトリ配下にあるリストファイルも無効化されています。あわせて有効化をするようにします。

僕の環境では以下のパッケージの有効化をしました。

  • nginx
  • skype
  • ubuntu-ja(Ubuntu Japanese Team が作成したパッケージ)

「閉じる」ボタンを押下するとメッセージが表示されます。

「再読込」のボタンを押下します。リポジトリのアップデートが行われます。

リポジトリが更新されたあとにパッケージを最新化しておきます。ソフトウェアの更新(黒い背景に A と書いてある)でやります。アップデートの確認が入り、アップデート可能なパッケージが表示されます。

「今すぐインストールする」のボタンを押下します。アップデートが行われパッケージが最新化されました。

ubuntu software が2つある?

デスクトップに表示されるアクティビティを見ていて気になるものがありました。「ubuntu software」と「ソフトウェア」です。

上がソフトウェアで、下が ubuntu software です。アイコンは違いますがアクティビティを起動すると、どちらも ubuntu software が立ち上がりました。違いがよくわかりません。

オレンジ色のアクティビティの情報です。

水色のアクティビティの方です。

ネットで調べてみたところ、オレンジ色の方は新しい ubuntu software のようです(Snap Store に対応しているっぽい?)。水色の方が今までの ubuntu software のようです。 ゆくゆくは水色の方はなくなるのでしょうが、動かしてみた感想を書くと、水色の方が動作が安定しているように思えます。

オレンジ色の方なのですが、例えば「教育&教養」を選んだとします。

そうするとアプリが表示されるはずなのですが、なかなか表示されません。このような感じです。

しばらく待つと表示されました。時間がかかります。

ubuntu software についてはしばらく様子を見ようと思います。

デスクトップからコピペができなくなった!

20.04 LTS を触っていて気付いたのですが、デスクトップ上でコピペができません。

どういうケースかと言うと、

  • デスクトップ上で、デスクトップにあるファイルをコピーして、他の場所にペーストする。
  • 他の場所にあるファイルをコピーして、デスクトップ上で、そのファイルをペーストする。

このような感じです。

デスクトップにあるファイルを選択して「コピー」をします。

それをファイルアプリを使ってドキュメントの配下に「貼り付け」をしようとしますが、「貼り付け」が非活性になっているため、それができません。

逆に、ドキュメント上のファイルを選択して「コピー」をします。

デスクトップの任意の場所をクリックしてそれを「貼り付け」しようとするのですが、「貼り付け」が非活性になっているためできません。

ファイルアプリを使ってやればコピペができました。

ファイルアプリでデスクトップの任意のファイルを選択して「コピー」をします。

それをドキュメントの配下に「貼り付け」します。「貼り付け」が活性になっているためコピペができます。

これもネットで調べたのですが、これはバグではなくて仕様のようです。ですので、慣れるしかなさそうです。

他のアプリはどうだったか?

PHP7.2を入れていたのですがバージョンが7.4にあがっていました。update-alternatives で7.2に戻すことはできそうですが、最近はPHPを使っていなかったのでそのままです。

FileZilla、Wireshark、Skepe、VLCメディアプレイヤーなど動かしてみましたが、問題なく動いています。

スクリーンショットツールのshutterについては、アクティビティがなくなってしまいました。というか、ImageMagickというものに置き換わってしまったようです。もう一度、shutterの入れ直しが必要です。

なお一通りの確認が終わってからですが、アップグレードのときにパッケージの削除をしていなかったので apt autoremove と apt clean をやっておきました。autoremoveでディスク容量の290MBぐらいが解放されました。

CentOSのsshの認証方式をパスワード認証から公開鍵認証に変更する。

CentOSのsshの認証方式をパスワード認証から公開鍵認証に変更します。実施した環境は以下です。CentOSにsshdはインストールされていて、パスワード認証が出来ているものとします。

クライアント、サーバーともログインアカウントには tak を使用しています。

鍵ファイルの作成

公開鍵ファイルと秘密鍵ファイルをクライアント側のubuntuで作成します。

[ クライアント側作業 ]
ubuntuにログインしてホームディレクトリ配下の .ssh ディレクトリに移動します。ssh-keygenコマンドで鍵生成をします。鍵の形式は RSA、ビット長は4096としました。

$ pwd
/home/tak/.ssh
$ ssh-keygen -t rsa -b 4096

鍵ファイルの名前を id_rsa.j として、パスワードの設定もしました。ログは以下のようになります。


$ ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/home/tak/.ssh/id_rsa): /home/tak/.ssh/id_rsa.j ←★鍵ファイルの名前を指定
Enter passphrase (empty for no passphrase):  ←★鍵ファイルにパスワードを設定
Enter same passphrase again: 
Your identification has been saved in /home/tak/.ssh/id_rsa.j.
Your public key has been saved in /home/tak/.ssh/id_rsa.j.pub.
The key fingerprint is:
SHA256:yjDweZqZvZQ/k8jnpD8xPAWnmsFQ0F633V1yLDQCdyU tak@maria
The key's randomart image is:
+---[RSA 4096]----+
 :
 :
+----[SHA256]-----+

カレントディレクトリの配下(/home/tak/.ssh)に以下の名前で鍵ファイルが作成されます。

秘密鍵ファイル・・・id_rsa.j
公開鍵ファイル・・・id_rsa.j.pub

公開鍵ファイルのアップロード

公開鍵ファイルをCentOSにアップロードします。サーバー側の作業とクライアント側の作業があるので、それぞれ行います。

[ サーバー側作業 ]
CentOSにログインします。僕の環境ではホームディレクトリ配下に .ssh ディレクトリがなかったため新規で作成します。鍵ファイルの格納場所となるため、他のユーザーがアクセスできないように制限をつけておきます。

$ pwd
/home/tak
$ mkdir .ssh
$ chmod 700 .ssh

[ クライアント側作業 ]
scpコマンドで公開鍵ファイルをCentOSにアップロードします。CentOSのIPアドレスは伏せさせていただきました。

$ pwd
/home/tak
$ scp .ssh/id_rsa.j.pub tak@xxx.xxx.xxx.xxx:~/.ssh/

[ サーバー側作業 ]
公開鍵ファイルが /home/tak/.ssh 配下にアップロードされていることを確認します。アップロードした公開鍵ファイルを authorized_keys という名前にリネームします。権限も変えます。

$ pwd
/home/tak/.ssh
$ mv id_rsa.j.pub authorized_keys
$ chmod 600 authorized_keys

なお、今回は authorized_keys には公開鍵ファイルは1つだけですが、複数の公開鍵ファイルを登録することも出来ます(その場合は、公開鍵ファイルを authorized_keys にアペンドしていきます)。

sshd_configの編集

sshd_configの編集をrootユーザーで行います。

[ サーバー側作業 ]
sshd_configは /etc/ssh 配下にあります。必要に応じてsshd_configのバックアップをとっておいてください。

# cd /etc/ssh
# vi sshd_config

編集する内容は、PubkeyAuthentication を yes にして、PasswordAuthentication を no にします。

修正前
#PubkeyAuthentication yes

PasswordAuthentication yes

修正後
PubkeyAuthentication yes ←コメントアウトを外す

PasswordAuthentication no ←yesからnoにする

修正が出来たら、sshdを再起動します。

# systemctl restart sshd

公開鍵認証での接続

[ クライアント側作業 ]
sshでクライアントから接続します。-i オプションで秘密鍵ファイルを指定します。

$ pwd
/home/tak
$ ssh -i .ssh/id_rsa.j tak@xxx.xxx.xxx.xxx
Enter passphrase for key ‘.ssh/id_rsa.j’:

鍵ファイルのパスワードを入力して、サーバーに接続が出来ます。

なお、sshではこれで問題ないのですが、plinkだと以下のエラーとなりました。


$ plink -i .ssh/id_rsa.j tak@xxx.xxx.xxx.xxx
Unable to use key file ".ssh/id_rsa.j" (OpenSSH SSH-2 private key (old PEM format))
Using username "tak".
FATAL ERROR: Disconnected: No supported authentication methods available (server sent: publickey,gssapi-keyex,gssapi-with-mic)

「old PEM format」のようです。手持ちのツールの FileZilla で鍵ファイルのフォーマット変換が出来ましたので、書いておきます。FileZilla は ubuntu上で動くFTPクライアントソフトです。

FileZilla のサイトマネージャーを開いて、プロトコルは「SFTP」、ログオンの種類を「鍵ファイル」にして接続を試みます。

接続ボタンを押下すると、鍵ファイルの変換のダイアログが出ます。

「はい」を押下します。パスワードが必要と促されるので、鍵ファイルを生成したときと同じパスワードを入力します。

新しい鍵ファイルの名前を決めて保存します。今回は id_rsa.g としました。

plinkで作り直した鍵ファイルを指定して接続してみます。

$ plink -i .ssh/id_rsa.g tak@xxx.xxx.xxx.xxx
Using username “tak”.
Passphrase for key “imported-openssh-key”:

鍵ファイルのパスワードを入力すれば、サーバーに接続が出来ます。