前々回の第820回では
UbuntuのCLIを使えるようになると、他のLinuxディストリビューションやWSL、Raspberry Pi OSなど他の環境におけるハードルもぐっと下がります。その人の使い方に合うか合わないかは別にして、一度は経験しておくことをおすすめします。
SSHサーバーの設定
インストール時にSSHサーバーを有効化していたのなら、Ubuntuサーバーにログインする方法は物理的にアクセスする
SSHクライアントについてはUbuntuだとデスクトップやサーバーにおいて最初からインストールされているsshコマンドを使うと良いでしょう。Windowsでも最近はOSの機能としてOpenSSHクライアントを提供していたりしますので、まずはより新しい情報にあたってみてください。一般的なsshコマンドの書式は次のとおりです。
$ ssh Ubuntuサーバーのアドレス
Ubuntuサーバー側のSSHサーバーの設定は次のようになっています。
- 受け入れポート番号は22
- パスワードでのrootログインは不可
- インストール時に鍵を登録した場合はパスワードログイン不可
- 起動後にSSHログインしない限りSSHサーバーは立ち上がらない
基本的にはこの設定を変える必要性はそこまで高くありません。もしそのサーバーがインターネットに公開されるのであれば、ポート番号ぐらいは変えておくと不正アクセスを試みようとするログが減って良い、ぐらいでしょうか。ただし個別の環境ごとに設定を変更したいことはあるでしょう。
ちなみに最後の項目ですが、これはここ数年以内の変更点のひとつです。従来のUbuntuではサーバーが起動すると常にSSHサーバーが起動し、常駐していました。しかしながらコンテナや組み込み環境でのUbuntuの利用が増えてきた結果、必ずしもSSHサーバーが必要とは言えない状況になってきています。
そこで最近のUbuntuではssh.
SSHサーバーの設定ファイル
まず、SSHサーバーの設定は次の2箇所にわかれています。
/etc/
ssh/ sshd_ config. d/*.conf /etc/
ssh/ sshd_ config
SSHサーバーの設定ファイルは
PermitRootLogin prohibit-password # この行の設定のみが採用される PermitRootLogin yes # この行の設定は無視される
/etc/
の設定キーはほとんどがコメントアウトされています。よってもし何か設定を変更したければ/etc/
以下に適当な名前.conf
」/etc/
は、/etc/
の冒頭で読み込んでいるため、/etc/
に記述した設定は常に/etc/
より優先されます。
たとえばPasswordAuthentication no
)」の設定は、インストーラーが/etc/
を作って実現しています。
$ sudo cat /etc/ssh/sshd_config.d/50-cloud-init.conf PasswordAuthentication no
公開鍵の追加方法
SSHでは一般的に公開鍵認証方式を用いてログインします。このときSSHサーバーにログインしようとするユーザーは手元に秘密鍵を持っておく必要があり、ログイン先のSSHサーバーには公開鍵が登録されていなくてはなりません。
このあたりの基本的な使い方は第40回の
- 秘密鍵・
公開鍵のペアは 「 ssh-keygen
」コマンドで生成する - サーバーへの公開鍵のコピーは
「 ssh-copy-id -i 公開鍵ファイル サーバーのアドレス
」で行う
GitHubやLaunchpadに公開鍵を登録している場合は、サーバー側でssh-import-id プロトコル:ユーザー名
」gh
」、Launchpadならlp
」
ちなみに最新のUbuntuでは、FIDOなどに対応したセキュリティキーを用いたSSHログインも可能です。詳細は第620回の
シリアルコンソールログイン
SSHログインの最大の弱点は、
サーバー用に作られたマシンであれば、大抵の場合はIPMIなどを利用したシリアルコンソールが備わっています。いざという時のためにシリアルコンソールからもログインできるようになっていると安心です。Ubuntuにおけるシリアルコンソールに関しては第638回の
ログイン時に表示されるあれやこれや
Ubuntuに初めてログインすると、次のようにさまざまな情報が表示されます。
これは初心者にとっては参考になる情報のポインタがありますし、ロードアベレージやストレージの使用量など注意すべき項目も多く存在します。しかしながらログインするたびにこれを表示されるのは若干面倒ですし、シリアルコンソールのような
このあたりの情報は、管理者側の設定で個別に表示・
管理者権限を取得する方法
Ubuntuでは昔からrootアカウントをsudo
」
これは主に
結果的にUbuntuでのCLI操作において、管理者権限が必要な処理を行う場合は。sudo コマンド
」
基本的なコマンドフォーマット $ sudo 管理者権限で実行したいコマンド [sudo] password for shibata: 自分のパスワードを入力
sudoコマンドの挙動は/etc/
」/etc/
」
ネットワーク設定の基本
Ubuntuサーバーを十分に使いこなすためには、インターネットへの接続が必要です。最近のPCは、LANケーブルを繋ぐだけでネットワークに接続できますし、特に設定しなくてもインターネットに繋がっているはずです。ただし、サーバーの場合は
Ubuntuサーバーにおけるネットワーク設定は
$ sudo cat /etc/netplan/50-cloud-init.yaml # This file is generated from information provided by the datasource. Changes # to it will not persist across an instance reboot. To disable cloud-init's # network configuration capabilities, write a file # /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following: # network: {config: disabled} network: ethernets: enp5s0: dhcp4: true version: 2
これはシンプルに
Netplanでは/etc/
」/etc/
」/etc/
」
$ sudo cat /etc/netplan/70-fixed-ip-address.yaml network: ethernets: enp5s0: dhcp4: false addresses: - 10.10.10.2/24 version: 2 $ sudo chmod 600 /etc/netplan/70-fixed-ip-address.yaml
これで後者のファイルによって固定IPアドレスが設定できるというわけです。実際の適用には次の様なコマンドを行います。
お試しで適用する方法。tryを実行後に120秒以内にapplyしなければ自動でロールバックする $ sudo netplan try 設定ファイルの内容を適用する $ sudo netplan apply
ネットワーク設定を間違えると、リモートからログインできなくなることがあります。そこでまずは
ただしロールバック自体も完璧ではありません。うまく設定が元に戻らず、ネットワーク経由のログインができなくなった事態に備えて、シリアルコンソールなど別のログイン手段を用意しておくことを強くおすすめします。
Netplanの細かい設定例については、Netplan公式のサンプル集が参考になるでしょう。
パッケージ管理システムとセキュリティアップデートの方法
一度ログインできるようになり、インターネットにも接続できるようなったら、パッケージ管理システムの使い方とセキュリティアップデートの方法を学ぶことになるでしょう。Ubuntuの場合は、Debianと同じ
リポジトリのメタデータを最新に更新する $ sudo apt update インストール済みのパッケージを最新版に更新する $ sudo apt upgrade リポジトリからパッケージを検索する $ sudo apt search 検索文字列 パッケージの情報を表示する $ sudo apt show パッケージ名 パッケージをその依存関係も含めてインストールする $ sudo apt install パッケージ名 パッケージを削除する $ sudo apt remove パッケージ名
APTシステムではパッケージやそのメタデータを提供するサーバーを
ただし公式パッケージについては、次のような特徴があることに注意が必要です。
- 一部を除いてリリース後にはバージョンが更新されることはない
- セキュリティパッチの適用結果はバージョンだけでは判断できない
一般的なパッケージのバージョンは次のフォーマットになっています。
"パッケージの元になったバージョン"-"Debianリビジョン"ubuntu"Ubuntuリビジョン"
たとえばOpenSSHサーバーのバージョンなら次のとおりです。
$ apt policy openssh-server openssh-server: インストールされているバージョン: 1:9.6p1-3ubuntu13.4 候補: 1:9.6p1-3ubuntu13.4 バージョンテーブル: *** 1:9.6p1-3ubuntu13.4 500 500 http://jp.archive.ubuntu.com/ubuntu noble-updates/main amd64 Packages 500 http://security.ubuntu.com/ubuntu noble-security/main amd64 Packages 100 /var/lib/dpkg/status 1:9.6p1-3ubuntu13 500 500 http://jp.archive.ubuntu.com/ubuntu noble/main amd64 Packages
ここで言う1:9.
」1:
」
「9.
」9.
」9.
」
これはUbuntuをリリースしたあとのパッケージのバージョンアップは、他の依存ソフトウェアの影響が大きく、Ubuntuシステムの安定性に重要な問題を生じる可能性があるためです。よってセキュリティ対応や不具合修正は、3ubuntu13.
」3
」ubuntu13.
」
さて、OpenSSH 9.1:9.
」1:9.
」
かなりややこしい話ではありますが、Linuxディストリビューションを安定的に運用する上ではどうしてもこのようにパッチ単位で適用する対策を取らざるをえません。あるセキュリティインシデントがどのバージョンで修正されたかは、Ubuntu Security Noticeや、Ubuntu Weekly Topicsなどを参照することになるでしょう。
ちなみにUbuntuサーバーには、ユーザーが操作しなくても自動的にセキュリティアップデートを適用する
またパッケージの更新後に再起動が必要になるかは、ターゲットとなるパッケージ次第です。基本的にはほとんどのケースで再起動は必要ないのですが、たまに再起動が必要なパッケージが複数回更新されるケースもあるので油断はできません。なお、カーネルの更新には再起動が必要になります。ただし、Ubuntu Proが提供する
APTシステムに関する各種ノウハウや情報は、次の記事も参考になるでしょう。
- 第217回
「新年度特別企画・ Red HatユーザーのためのUbuntuパッケージ管理の心得 」 - 第312回
「パッケージとより良いお付き合いをするための情報収集」 - 第315回
「apt-cacher-ngを使ってAPT用キャッシュプロキシの構築」 - 第327回
「aptコマンドを使ってみよう」 - 第331回
「パッケージ管理のハウツー集」 - 第676回
「aptコマンドの最新機能あれこれ」 - 第677回
「aptで使うsources. listのオプションいろいろ 」 - 第718回
「needrestartで学ぶパッケージのフック処理」 - 第812回
「aptの新機能あれこれUbuntu 24. 04 LTS版 」
snapパッケージについて
近年のUbuntuには
前述したようにUbuntuのパッケージは、そのリリースごとでバージョンが固定化されていました。そうせざるを得ない最大の理由が
しかしながら近年はソフトウェア開発や品質評価の手段が進化し、セキュリティ対応の重要性も上がることで、リリース周期が短くなっています。さらにC言語がメインだった時代に比べて、多種多様なプログラミング言語が日常的に使われ、それぞれが独自のパッケージ管理システムと依存関係を持つようになってきました。
そんな現代においてパッケージ間の依存関係を
このあたりはAndroidやiOSなどのスマートOSが既に実現しているパッケージと権限の関係をLinuxにも持ってこようとしていると考えれば良いでしょう。
Linuxディストリビューションでは、ユニバーサルパッケージとしてFedora等が開発しているFlatpakが有名です。ただしUbuntuでは、IoTやサーバーでも同じユニバーサルパッケージを提供したいという思いもあって、独自の
パッケージを検索する $ snap find 検索文字列 パッケージの情報を表示する $ snap info パッケージ名 パッケージをインストールする $ sudo snap install パッケージ名 --channel チャンネル名 パッケージを削除する $ sudo snap remove --purge パッケージ名 インストール済みパッケージを更新する $ sudo snap refresh
snapパッケージでは
また削除時に--purge
」
とりあえず何かインストールしてみたいのであれば、
ここまでUbuntuを使う上で最低限把握しておくとそのあとが楽になる情報をまとめてみました。より深く知るにはリンク先の情報などを参照していただく必要がありますが、軽く知っておけば良いならこの記事を流し読むだけでも大丈夫です。
おそらく実際にUbuntuサーバーを使って何かを実現するには、たとえばDockerやIncus/
ぜひ何か機会があってUbuntuサーバーを触ることがあれば、まずは本記事の手順や、リンクされている記事を参考に作業を始めてみてはいかがでしょうか。