Ubuntuにsshで接続できるようにする設定方法について紹介します。
Contents
Ubuntuにsshで接続できるようにする
sshでUbuntuに接続する方法を説明していきます。ssh接続するためのOpenSSHのインストール方法及びSSHの具体的な設定方法例を紹介します。
本記事の内容を確認しているOS環境は「Ubuntu 20.04.2 LTS」になります。他のUbuntuバージョン環境でも基本的には同じ操作にて設定可能かと思います。
OpenSSH
OpenSSHのインストール
ssh接続するためには、ssh接続するためのOpenSSHをUbuntuにインストールする必要があります。以下のコマンドでOpenSSHをインストールします。
sudo apt install openssh-server
サービス状態確認
インストールが完了したらサービスが起動しているかを確認します。以下のコマンドを実行することでサービスが起動しているかを確認することができます。
sudo systemctl status ssh
以下のようにActiveがactive (running)となっていればsshサービスは起動しています。
サービスの自動起動設定確認
サービスはPCやサーバーが起動した際に自動でサービスが起動するかどうかを設定できます。サービス自動起動の設定状態を確認するには以下のコマンドで確認できます。
sudo systemctl is-enabled ssh
結果が「enabled」となっていれば自動起動する設定となっています。
「disabled」になっている場合は、自動起動しないため以下のコマンドで自動起動するように変更することができます。
sudo systemctl enable ssh
また、逆に自動起動しないようにするためには以下のコマンドで設定することも可能です。
sudo systemctl disable ssh
SSHの詳細設定
OpenSSHをインストールすればユーザー、パスワードを使用してすぐにssh接続することは可能です。しかし、そのままの設定状態はセキュリティ上よい状態とは言えません。
そのため、公開鍵認証方法でssh接続する方法について紹介します。
ssh用の鍵を生成する
ssh用の鍵を生成します。ubuntuのホームディレクトリに移動して、以下のコマンドを実行します。
ssh-keygen -t rsa
sshのパスワード入力を求められますが、何も入力せずにEnterでも構いません。結果、ホームディレクトリの.sshディレクトリに「id_rsa」「id_rsa.pub」ファイルが出力されます。
id_rsa.pubについては、ファイル名を「authorized_keys」に変更します。
cd .ssh mv id_rsa.pub authorized_keys
上記はホームディレクトリから.sshへ移動するコマンドも含んでいますが、現在のディレクトリにあわせて読み替えてください。
また、権限については、所有者権限のみ読込・書込可能の600に設定しておきます。
sudo chmod 600 authorized_keys
sshd_configの修正
sshの設定ファイルである「/etc/ssh/sshd_config」を修正します。/etc/ssh/sshd_configファイルをviやnano等のエディタを用いて開きます。
セキュリティを確保するために最低限設定すべき変更項目は以下です。各項目を設定ファイルの中で探してみてください。設定ファイルにおいて#となっている部分はコメントアウトとなっていますので、以下の項目が#となっている場合は#を削除してください。
Port xxxxx PermitRootLogin no PasswordAuthentication no PermitEmptyPassword no ChallengeResponseAuthentication no
「Port xxxxx」は、接続する際のポート番号を指定します。sshはデフォルトでは22番ポートが使用されますが、デフォルトで一般的であるため22のままだとクラッカーが攻撃しやすくなります。
そのため、Portのxxxxxの部分については、自分で決めたポート番号を設定してください。ポートが衝突しないようにプライベートポートの番号範囲から設定すればよいと思います。
ポート番号は番号によって以下のような区分があります。
種類 | ポート番号範囲 | 概要 |
---|---|---|
Well Known Port (ウェルノウンポート) | 0~1023番 | 一般的に利用されるポート番号 |
Registerd Port Number (登録済みポート) | 1024~49151番 | 登録済みポート番号 |
Private Port (プライベートポート) | 49152~65535番 | 自由に使えるプライベートポート番号 |
「PermitRootLogin no」とすることによってrootユーザーでのログインを拒否することができます。
「PasswordAuthentication no」とすることによってパスワードによる認証を拒否できます。クラッカーがパスワードを試してログインするようなことを拒否できます。
「PermitEmptyPassword no」はパスワードなしのユーザーに対する認証を拒否できます。
「ChallengeResponseAuthentication no」はチャレンジレスポンス認証に関する項目ですが、これを許可すると結果的にパスワード認証を許可しているようなものであるためnoとします。
sshサービスを再起動する
sshd_configファイルファイルを変更した場合には、設定内容を反映するために再起動をする必要があります。以下のコマンドでSSHサービスを再起動することができます。
sudo systemctl restart ssh
鍵情報を接続元へ共有する
sshの鍵の生成が完了したら秘密鍵の「id_rsa」ファイルをUSB等を利用して接続元となるPCへコピーします。
その後、各sshターミナルソフトウェアの設定に従って、コピーした秘密鍵を指定して接続します。また、ポート番号については上記の「sshd_configの修正」で設定したポート番号を指定します。
上記のようにすると秘密鍵ファイルを用いて認証するのでパスワード入力は求められません。そのため、外部からの接続では秘密鍵を持っていない限り接続できません。
また、ポート番号も一般的なデフォルトの22から個別に変更しているためポート番号が分からない限り接続することはできないため攻撃のリスクを減らすことができます。
上記のようにSSH設定をすることでセキュリティを高めたうえでSSH接続をすることができるようになります。
Linuxについて学習したいという方にはUdemyのLinuxコース講座がおすすめです。様々なコースがありますので、自分の興味のあるコースを探してみてください。
Udemyでは定期的にキャンペーンが実施されています。キャンペーン時は通常2万円ぐらいの講座でも大幅値下げされて本1冊分ぐらいで買える時があります。タイミングを逃さないようにチェックして購入を検討してみてください。