SSH設定

1. SSHとは

SSHとは、別のコンピューターに遠隔でログインしたり、特定のサーバに入ったりするために使用されます。

2. SSHのインストール

UbuntuでSSHを使用する際には、OpenSSHをインストールする必要があります。OpenSSHとはSSHプロトコルを利用するためのソフトウェアです。

sudo apt install openssh-server

# サービスの起動、有効化、確認
sudo systemctl start ssh
sudo systemctl enable ssh
sudo systemctl status ssh

3. ポート番号の設定

SSH の設定は、/etc/ssh/sshd_config に記述されているため、この設定ファイルを変更し反映させます。 設定の変更によって不具合が生じる可能性もあるため、以下のコマンドで変更を加える前に、まず設定ファイルのバックアップを作成しましょう。

デフォルトでは SSH は 22 番ポートを通じて通信を行いますが、 セキュリティの観点から、デフォルトの22番ポート以外を使用することが推奨されます。

# 設定ファイルのバックアップ
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config_backup

# ファイアウォールの設定
sudo ufw allow 7022(任意のポート番号)/tcp

0-1023番までは「ウェルノウンポート」と呼ばれ、一般的なサービスで予約されています。 そのため、1024番以上のポート番号を使用するようにしましょう。

設定ファイル(/etc/ssh/sshd_config)から 「#Port 22」と記述されている行を以下のように変更します。

#vimの起動
sudo vi /etc/ssh/sshd_config
# Port 22 を以下のように変更
Port 7022(任意のポート番号)

SSH で利用するポート番号を変更したら、次にファイアウォールに SSH のポート利用許可のルールを追加する。

sudo ufw allow 7022(任意のポート番号)/tcp

4. SSHログイン

SSH の基本設定が完了した後、SSH 接続可能かどうかテストする。Windows の場合は、 PowerShellを起動する。Mac や Linux の場合は、ターミナルまたは端末を起動する。そして、以下のコマンドを実行する。

ssh ユーザ名@ホスト名 -p ポート番号

※Windowsのコマンドプロンプトの場合、sshコマンドのインストールが必要となるため、特にこだわりがない場合はPowerShellを使用する。
ユーザに応じたパスワードを入力したら、ログインが実行される。

5. 2段階認証の設定

より安全な認証のために、パスワード認証と公開鍵認証を組み合わせた2段階認証を設定できます。
SSH を利用するクライアント PC で鍵生成を行う。Windows の場合は、PowerShell から、 Mac や Linux の場合は、ターミナルもしくは端末から鍵生成を行う。

# 鍵の生成例(ssh-keygen -t 暗号化アルゴリズム -f ファイル名)
ssh-keygen -t ed25519 -f ./.ssh/id_ed25519

# 公開鍵の登録
cat $HOME/.ssh/id_ed25519.pub | ssh ユーザ名@ホスト名 -p ポート番号 "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

ここで指定している「ed25519」は従来の鍵生成の方式よりも高速かつ安全であるため、現在主流の暗号化アルゴリズムとなっています。

ファイル名は、生成した鍵を保存するためのファイルになります。基本的には、生成した鍵は「.ssh」という隠しディレクトリ(フォルダ)の直下に配置することが多いため、 「$HOME/.ssh/ファイル名 ($HOME\.ssh\ファイル名)」とすることが多いです。 パスフレーズの設定を行い、正常に実行されると、「ファイル名(秘密鍵)」と「ファイル名.pub(公開鍵)」の 2 つのファイルが生成されます。

公開鍵登録は、cat コマンドと ssh コマンドをパイプで組み合わせることで、 生成した鍵をクリップし、直接サーバにファイルとして書き出すという方法で行っています。

公開鍵の登録を行った後、2 段階認証を有効化するために設定ファイルの編集を行います。 設定ファイルに以下を追加します。

AuthenticationMethods publickey,password

パラメータを記述した後は、ssh サービスを再起動し、設定を反映させる。 以上の設定を行い、SSH接続時にパスワードが要求されれば、2段階認証が正常に機能している。