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段階認証が正常に機能している。