Ubuntu / SSHポート・root接続とNetworkManagerの管理メモ

UbuntuのSSH設定を変更するときは、有効な設定と待ち受け方式を確認し、構文検査と別接続での確認を行います。ここではSSHポート、rootログインの許可条件、NetworkManagerの文字画面ツールを整理します。鍵認証の準備はUbuntuのOpenSSHと公開鍵認証も参照してください。

SSH ポートを変更する方法

SSH(Secure Shell)の既定ポートは22です。ポートの変更は自動スキャンの雑音を減らすことがありますが、認証や更新の代わりにはなりません。1980へ変更する例では、コンソールなどの復旧経路と設定のバックアップを用意し、既存のSSH接続を残して作業します。

  1. sudoedit /etc/ssh/sshd_configで設定を開きます。Include先の/etc/ssh/sshd_config.d/や既存の有効なPort設定も確認します。次はコメント行の例です。
#Port 22
  1. 変更する構成で、待ち受けポートを次の値に設定します。ポートの競合や、意図せず複数の待ち受け設定が残っていないか確認してください。
Port 1980
  1. UFW(Uncomplicated Firewall)を使っている場合は、新しい1980番ポートへの必要な接続を先に許可します。次は接続元を限定しない例なので、必要に応じて接続元を制限してください。クラウド側のファイアウォールなども別途確認します。
sudo ufw allow 1980/tcp
  1. systemctl is-active ssh.socketとsystemctl cat ssh.socketで待ち受け方式を調べます。次の再起動例は、ソケット起動を使わずssh.service自身が待ち受ける構成向けです。構文検査が成功した場合だけ再起動します。
sudo sshd -t &&
sudo systemctl restart ssh

UbuntuにはSSHのソケット起動構成もあります。ssh.socketが有効な場合、サービスの再起動だけでは待ち受けポートの変更が反映されないことがあります。現在のunit(systemdの管理単位)と/usr/share/doc/openssh-server/README.Debian.gzを確認してください。

ソケット側で明示する場合はsudo systemctl edit ssh.socketでドロップイン設定を開き、[Socket]の次に空のListenStream=行、その次にListenStream=1980行を追加します。空の行はそれまでの待ち受けアドレス一覧をリセットする指定です。既存の待ち受けIP制限を維持する場合は、ポート番号だけの例を使わず、必要なIPとポートを指定します。

このドロップインとSSH設定をバックアップ・検査したうえで、sudo systemctl daemon-reloadを実行し、sudo systemctl restart ssh.socket ssh.serviceで反映します。sudo ss -lntpで待ち受けを確認し、別の端末からssh -p 1980 ユーザー@ホストで接続します。確認が済むまで旧ポートの許可や復旧経路を閉じないでください。失敗したらコンソールから変更した設定だけをバックアップに戻し、再検査して同じ方式で反映します。

rootアカウントでSSH接続できるように設定

設定ファイルを修正

  • 通常の管理では一般ユーザーで接続してsudoを使います。rootでの直接接続が必要な運用要件がある場合だけ、管理者の方針に従って/etc/ssh/sshd_configと読み込まれる追加設定を確認します。
  • 次はコメント行の例です。PermitRootLoginのprohibit-passwordはrootのパスワード・キーボード対話認証を禁止します。鍵認証まで一律に禁止する値ではありません。
#PermitRootLogin prohibit-password
  • 例外的にパスワード方式も許可する必要がある場合の値は次のとおりです。単にコメントを外してyesへ変えることを通常の推奨手順にはしません。鍵認証だけならprohibit-password、直接接続を禁止するならnoを選びます。
PermitRootLogin yes

設定を適用する

  • sudo sshd -Tで有効な設定を確認します。条件付きのMatchがある場合は、その接続条件での設定も確認してください。yesだけで接続できるとは限らず、アカウントの状態・鍵・その他の認証設定も関係します。構文検査後に認証設定を反映し、既存の管理接続を残して別の端末から試します。
sudo sshd -t &&
sudo systemctl restart ssh

nmtui コマンドを使用したい場合

nmtuiはNetworkManagerを操作する文字画面のツールです。導入が必要な場合は、パッケージ情報を更新して次のようにインストールします。ネットワーク管理の切り替えに備え、リモート作業ではコンソールと設定のバックアップを先に確保します。

sudo apt update &&
sudo apt install network-manager

導入後はnmtuiで接続設定の編集、nmtui connectで接続の有効化・無効化の画面を開けます。ただし、インストールしただけでsystemd-networkd管理中のインターフェースがNetworkManager管理へ変わるとは限りません。Netplan・NetworkManager・systemd-networkdの役割を確認し、実際のrenderer(設定の適用先となるネットワーク管理ツール)に合わせて操作します。