遠隔地にあるLinuxサーバーや、クラウド上の仮想サーバー、VPSに接続するには、SSHを使用すると便利です。
SSHは、ネットワーク上で安全にリモートコンピュータにアクセスする場合や、遠隔地からのアクセスが必要な際に複数のユーザーが同じコンピュータにアクセスする場合に使用します。
暗号化通信を利用してデータのやり取りを保護し、セキュリティが重視される場面にSSHが広く利用されています。
本記事では、SSHを利用するにあたり、UbuntuにSSHサーバーを構築する方法、SSHに接続するまでの手順を紹介します。
2022.10.13
Ubuntuとは。特徴、できること、通常版とLTE版の違いを解説
UbuntuはLinux系のOSであり、多くのLinuxディストリビューションの中でも高い人気を誇ります。非常に扱いやすいた...
2022.09.29
SSH接続とは。リモートコンピューターへの接続方法をわかりやすく解説
遠隔地にあるサーバーや、VPS(仮想専用サーバー)へ接続して遠隔操作を行う方法として、SSH接続があります。リモートコンピューターへ...
UbuntuをVPSで利用するなら
ミライサーバー
\2週間無料・全プランSSD搭載/
ミライサーバーを無料で試す
目次
SSHサーバーの構築
前提条件
今回は、仮想マシン上にUbuntuおよびSSHサーバーを構築します。
仮想マシンのスペックは以下のとおりです。
- CPU:2vCPU
- Memory:4GB
- Disk:50GB
Ubuntu、Nginxは以下のバージョンを利用しています。
- Ubuntuのバージョン:Ubuntu 22.04.2 LTS
- Nginxのバージョン:OpenSSH_8.9p1
2023.04.13
Ubuntu 22.04 LTSでのIPアドレス設定方法。コマンドも紹介
パソコンやサーバーとネットワークで通信するには、IPアドレスの設定が必要です。UbuntuでIPアドレスを設定する方法としては、CU...
2023.05.11
UbuntuとNginxでのWebサーバー構築方法【初心者向け】
Nginx(エンジンエックス)は、Apache(アパッチ)に次ぐ人気のWebサーバーです。Nginx(エンジンエックス)、Apach...
また、コマンドの標記については、実際に入力するコマンドを太字、コマンドを実行後に入力を求められる箇所については赤字、補足の内容を青字で記載しています。
SSHサーバーのインストール
今回はUbuntuにデフォルトで利用できるソフトウェアリポジトリを使用してSSHサーバーソフトウェアをインストールします。
SSHサーバーをインストールするには、管理者権限が必要です。
rootアカウントを使用するか、通常ユーザー(以下の例では、testuser)をsudoグループに追加しておきましょう。
# usermod -aG sudo testuser |
次に、SSHサーバーソフトウェア(openssh-server)をインストールします。
以下の例では、先ほどsudoグループに追加した通常ユーザーを使って、sudoコマンドからopenssh-serverパッケージをインストールしています。
$ sudo apt update $ sudo apt install openssh-server |
インストールが完了すると、すでに起動した状態になります。
起動状態およびopenssh-serverのバージョンを確認します。
起動状態の確認
$ sudo systemctl status ssh |
openssh-serverのバージョン確認
$ ssh -v OpenSSH_8.9p1 Ubuntu-3ubuntu0.1, OpenSSL 3.0.2 15 Mar 2022 |
SSHサーバーが起動している状態で、別サーバーから接続できるようになります。
今回は別端末からTeratermを使用し、SSH経由で接続します。
接続が成功すると、ユーザー名とパスワードを聞かれます。
ユーザー名とパスワードを入力して、「OK」を押下します。
例では「testuser」としていますが、他のユーザーが存在していれば、そちらでもかまいません。
無事接続ができると、以下のようにプロンプトが表示されます。
SSHサーバーの起動・停止
SSHサーバーを操作する上での基本的なコマンドについて紹介します。
インストールした直後はすでにWebサーバーが起動した状態ですが、停止や起動、自動起動の設定を行いたい場合は、以下のコマンドを実行します。
操作 | コマンド |
---|---|
SSHサーバーの停止 | $ sudo systemctl stop ssh |
SSHサーバーの起動 | $ sudo systemctl start ssh |
SSHサーバーの再起動 | $ sudo systemctl restart ssh |
設定のリロード | $ sudo systemctl reload ssh |
自動起動の有効化 | $ sudo systemctl enable ssh |
自動起動の無効化 | $ sudo systemctl disable ssh |
SSHの設定
SSHサーバーをインストールした直後は、セキュリティが弱い状態です。
ここでは、最低限セキュリティを確保するための設定を行います。
SSHの設定変更
SSHの設定ファイルは、「/etc/ssh/ssh_config」と、「/etc/ssh/sshd_config」の2つがあります。
ssh_configは「他のサーバーにsshで接続するとき」の設定ファイルであり、
sshd_configは「他のサーバーからsshで接続されるとき」の設定ファイルです。
今回は「/etc/ssh/sshd_config」の内容を更新します。
更新する際は、万が一不具合が発生しても設定を戻せるようにするため、バックアップをとっておきましょう。
rootユーザーになり、バックアップを取得
$ sudo su # ※←プロンプトがシャープに変わる # cp /etc/ssh/ssd_config /etc/ssh/sshd_config.bak ※バックアップを取得 |
sshd_configファイルを編集
# vi /etc/ssh/sshd_config |
以下の設定を追加します。
rootユーザーでのログインを抑止(PermitRootLogin)
PermitRootLoginは、rootユーザーによる接続を許可するかどうかを設定します。
デフォルト「prohibit-password」は、公開鍵認証のみ有効です。
root権限は非常に強力なため、rootユーザーでのログインを抑止したい場合は、「no」を設定します。
パスワード未設定のユーザーの接続を抑止(PermitEmptyPasswords)
パスワードが設定されていないユーザー(空のパスワード)による接続を抑止する場合には、「no」を設定します。
ポート番号の変更(Port)
SSHポートはデフォルト「22」ですが、広く知れ渡っているため、プライベートポートに変更することでセキュリティを強化できます。
ここでは例として「10022」に変更しています。
公開鍵認証を有効化(PubkeyAuthentication)
公開鍵認証を使用する場合には、yesにします。
秘密鍵ファイルの設定(HostKey)
認証用の秘密鍵を使用する場合は、Hostkeyにパスを設定します。
パスワード認証の抑止(PasswordAuthentication)
パスワードによる認証を拒否します。
悪意のあるユーザーが外部からパスワードで侵入を試みるのを防ぐことができます。
パスワード認証を拒否する場合は、公開鍵認証による接続ができるようになってから、実施してください。
設定が完了したら、ファイルを保存し、openssh-serverを再起動します。
# systemctl restart ssh |
SSH接続用の鍵の作成
SSHによる接続はパスワードを利用しても可能ですが、パスワードが知られてしまうと他人でも接続できてしまいます。
セキュリティを高めるには、公開鍵認証がおすすめです。
公開鍵認証については、こちらのコラムで詳しく解説しています。
2023.09.21
OpenSSHとは。安全な通信のための公開鍵認証の設定方法を解説。
OpenSSHは、SSHプロトコルによる遠隔地のリモートホストとの暗号化通信を実現するソフトウェアです。主にUnix系サーバーとの通...
公開鍵認証を設定し、より安全にSSH接続するようにしてください。
まとめ
今回はUbuntu上にSSHサーバーを構築し、設定を行う手順を解説しました。
SSHによる接続ができるようになると、クラウド上の仮想サーバーやVPS、遠隔地のサーバーが扱えるようになり、大変便利です。
セキュリティを強化するためにも、公開鍵認証の設定も含め、理解するようにしておきましょう。
UbuntuをVPSで利用するならミライサーバー
ミライサーバーは、アシストアップ株式会社が提供している、Unix系サーバーに特化したホスティングサービスです。
ミライサーバーのVPSでは、高速処理が可能なSSDを全プランに搭載しています。
OSは、UbuntuやDebian、AlmaLinuxなどの豊富なラインアップから選択することができます。
2週間無料トライアルを実施しておりますので、まずはお気軽にお試しください。