【ITニュース解説】How to Enable SSH on Ubuntu
2025年09月17日に「Dev.to」が公開したITニュース「How to Enable SSH on Ubuntu」について初心者にもわかりやすく解説しています。
ITニュース概要
Ubuntuでリモート操作やデプロイに必須のSSHを有効にする手順を解説。OpenSSHサーバーをインストールし、サービスを開始、ファイアウォールを設定する。接続テスト後、SSHキー利用やrootログイン禁止でセキュリティを強化する方法も学ぶ。
ITニュース解説
SSH(Secure Shell)は、ネットワーク経由でコンピューターを安全に操作するための技術である。特に、遠隔地にあるサーバーや仮想マシンを管理するシステムエンジニアにとって、SSHは不可欠なツールである。SSHを利用することで、インターネットのような信頼できないネットワーク上でも、データが暗号化されるため、盗聴や改ざんのリスクを抑えながら、安全にコマンドを実行したり、ファイルを転送したりすることが可能になる。UbuntuのようなLinuxベースのOSをリモートから管理する場合、SSHの設定は最初に行うべき重要なステップの一つとなる。
UbuntuでSSHを有効にするには、まずOpenSSHサーバーというソフトウェアをインストールする必要がある。これは、SSH接続を受け入れるためのサーバー側のプログラムである。インストール作業を始める前に、システムにインストールされているパッケージのリストを最新の状態に更新することが推奨される。これはsudo apt updateというコマンドで行う。sudoは管理者権限でコマンドを実行することを意味し、apt updateはパッケージ情報をインターネット上のリリポジトリから取得し、ローカルのリストを更新する。これにより、最新かつ正しいバージョンのソフトウェアをインストールできるようになる。次に、sudo apt install openssh-server -yというコマンドを実行してOpenSSHサーバーをインストールする。apt installは指定されたパッケージをインストールするためのコマンドであり、openssh-serverはSSHサーバー本体を指す。-yオプションは、インストール中に表示される確認プロンプトに対して、自動的に「はい」と答える役割を持つため、手動での入力なしでインストールが進む。このコマンドが正常に完了すると、SSHサービスとその依存関係にあるすべてのコンポーネントがUbuntuシステムに導入される。
OpenSSHサーバーのインストールが完了したら、次にSSHサービスを有効化し、開始する必要がある。サービスを有効化するとは、OSが起動した際にそのサービスが自動的に立ち上がるように設定することである。sudo systemctl enable sshというコマンドを実行することで、SSHサービスがシステム起動時に常に利用可能となるように設定される。次に、sudo systemctl start sshというコマンドを実行して、SSHサービスをすぐに開始する。これにより、システムを再起動しなくても、SSH接続を受け入れられる状態になる。SSHサービスが正しく動作しているかを確認するには、sudo systemctl status sshというコマンドを使用する。このコマンドの出力で「active (running)」という表示があれば、SSHサービスが問題なく動作していることを示しているため、次のステップに進むことができる。
システムにファイアウォールが設定されている場合、SSH接続を許可するように設定する必要がある。ファイアウォールは、外部からの不正なアクセスを防ぐためのセキュリティ機能であり、デフォルトではほとんどの通信をブロックしていることがある。UbuntuではUFW(Uncomplicated Firewall)というツールがよく使われる。UFWを使用している場合は、sudo ufw allow sshというコマンドを実行して、SSHが使用する標準ポート(通常はポート22)への通信を許可する設定を追加する。このコマンドは、SSHサービスが外部からアクセスできるように、ファイアウォールに穴を開けるようなものである。設定を変更した後、sudo ufw reloadというコマンドを実行して、新しいファイアウォールルールをシステムに反映させる必要がある。この設定がなければ、SSHサービスが動作していても、ファイアウォールによって接続がブロックされてしまうため、リモート接続はできない。
SSHサービスが稼働し、ファイアウォールも適切に設定されていれば、実際にSSH接続をテストすることができる。別のコンピューターから、SSHが有効化されたUbuntuシステムへ接続を試みる。その際、ssh your-username@your-ubuntu-ipという形式のコマンドを使用する。your-usernameの部分は、Ubuntuシステムに存在する有効なユーザー名に置き換え、your-ubuntu-ipの部分は、Ubuntuシステムのネットワーク上のIPアドレスに置き換える必要がある。例えば、ユーザー名がubuntuuserでIPアドレスが192.168.1.100であれば、ssh ubuntuuser@192.168.1.100と入力する。初めて接続する場合、接続先のサーバーの識別情報(フィンガープリント)を確認するメッセージが表示されることがある。これは、意図したサーバーに接続していることを確認するためのセキュリティ機能であり、通常は「yes」と入力して接続を続行する。その後、パスワードの入力を求められるので、正しいパスワードを入力すると、リモートのUbuntuシステムのシェルにアクセスできるはずである。
SSHの基本的な設定はこれで完了するが、より安全に運用するためには、いくつかのセキュリティ強化策を講じることが強く推奨される。第一に、パスワード認証ではなくSSHキー認証を使用することである。SSHキーは公開鍵と秘密鍵のペアから構成され、パスワードよりもはるかに推測されにくく、総当たり攻撃にも強い。秘密鍵を安全に管理することで、パスワードの漏洩リスクを大幅に減らし、セキュリティレベルを向上させることができる。第二に、rootユーザーでのSSHログインを禁止することである。rootユーザーはシステムに対する全権限を持つため、もしrootアカウントが不正アクセスされた場合、システム全体が危険にさらされる。SSH経由でrootとして直接ログインすることを許可せず、通常のユーザーでログインした後、必要に応じてsudoコマンドを使用して管理者権限の操作を行う運用がより安全である。これは/etc/ssh/sshd_configというSSHサーバーの設定ファイルを編集することで可能になる。第三に、SSHのデフォルトポートである22番ポートを変更することである。多くの自動化された攻撃は、デフォルトポートである22番ポートを狙って行われるため、これを別のポート番号(例:2222など、一般的に使われていない大きな番号)に変更することで、そうした自動攻撃のターゲットになる可能性を減らすことができる。これらのセキュリティ設定はすべて/etc/ssh/sshd_configファイルで管理されており、このファイルを編集した後は、sudo systemctl restart sshコマンドを実行してSSHサービスを再起動し、変更をシステムに適用する必要がある。
これらの手順を完了することで、UbuntuシステムでSSHが安全に利用可能となる。SSHを導入すれば、遠隔地にあるサーバーや仮想マシンを効率的に管理できるようになる。プログラムのデプロイ、設定ファイルの編集、システムの監視など、あらゆる操作をコマンドラインを通じて実行でき、システムエンジニアとしての業務効率を大幅に向上させることが可能である。また、Gitを使ったコードのバージョン管理や、Ansibleのような自動化ツールと連携させることで、開発や運用のプロセスをさらにスムーズに進めることができるため、SSHはシステム開発や運用における必須の技術と言える。