ConoHa VPS + KUSANAGIのSSH接続設定

2019年5月4日

ConoHa VPSの初期セットアップ

ConoHa VPSでKUSANAGIを使用してみたいと思い、専用ユーザーを使用してSSH設定を行うまでの手順を実施したので備忘録として書き残します。

ConoHaアカウントの作成とサーバー生成

まずはConoHaアカウントを作成します。流れとしてはアカウント作成後、VPSなどを申し込んで課金が開始されます。

手順はKUSANAGI公式が公開しているものがわかりやすいです。

サーバー生成時の注意点

VPS申込時に「SSH Key」欄があり、ここで自動生成することが可能ですが、root権限でのSSH接続はセキュリティ上望ましくないため非推奨です。

作業用ユーザーのSSH接続

KUSANAGIへ接続

まだroot権限しか作成されていないため、KUSANAGIに接続して今後の作業用ユーザーを作成しましょう。

ConoHaのサーバー管理画面から「コンソール」を選択することでrootとして接続が可能です。コンソールはMacなどでカスタマイズしたbashなどと比べると使いづらいですが、SSH接続が可能になるまでの辛抱です。

作業用ユーザーの作成

「任意のユーザーID」には今後自身で使いたいIDを設定します。

# ユーザー作成
adduser 任意のユーザーID

# パスワード設定
passwd 任意のユーザーID

# wheelグループに追加
gpasswd -a 任意のユーザーID wheel

このあと作業用ユーザー以外でSSH接続を禁止する予定なので、作業用ユーザーからroot権限になることが可能か確認します。もしroot権限になれないまま作業を進めると、誰もログインできない環境となる可能性があるので絶対に確認しましょう。

# 作業用ユーザーでログインできるか確認
su 任意のユーザーID

# root権限になる
su
# パスワードを聞かれるので入力

SSH接続設定の変更

# 設定ファイルを修正
sudo vi /etc/ssh/sshd_config
項目名ビフォアアフター
RSAAuthenticationコメントアウト中yes
PubkeyAuthenticationコメントアウト中yes
AuthorizedKeysFileコメントアウト中.ssh/authorized_keys

設定項目自体がデフォルトでコメントアウトされていたはずなので、コメントアウトを解除した上で、上記の値が設定されていることを確認します。

# 設定ファイルの修正を反映
sudo service sshd restart

鍵の生成

引き続きKUSANAGIのコンソール上で作業します。

# ~/.sshディレクトリを作成
mkdir ~/.ssh
chmod 700 ~/.ssh

# 鍵を作成
cd ~/.ssh
ssh-keygen -t rsa -b 2048
Enter file in which to save the key: kusanagi
Enter passphrase: 任意のパスフレーズ
Enter same passphrase again: 任意のパスフレーズ

# ファイル名の変更
mv kusanagi.pub authorized_keys
chmod 600 authorized_keys

# ローカルコピーのため内容の確認
cat kusanagi

最後のcatコマンドで表示された内容をコピーし、以下はローカル上で作業します。

cd ~/.ssh

# コピーした内容を貼り付けて保存
vi id_kusanagi_rsa
chmod 600 id_kusanagi_rsa

# SSH接続の簡略化
vi ~/.ssh/ssh_config
# 以下の内容を追記
Host kusanagi
  HostName [ConoHa VPSで生成したサーバーのIP]
  User 任意のユーザーID
  Port 22
  IdentityFile ~/.ssh/id_kusanagi_rsa

ひとまず設定が一段落したので、SSH接続を試してみましょう。この時点で接続に失敗した場合、どこかの手順でミスが発生しています。

ssh kusanagi

セキュリティ対策

root権限のSSH接続禁止、パスワード認証の禁止

現在はroot権限でもSSH接続の設定さえすれば接続が可能となっているはずです。せっかく作業用ユーザーを作成したので、root権限のSSH接続を禁止としましょう。

同時に鍵認証を設定したのでパスワード認証は禁止にしましょう。

これらの操作はKUSANAGI上で行います。

# 設定ファイルを修正
sudo vi /etc/ssh/sshd_config
項目名ビフォアアフター
PermitRootLoginyesno
PasswordAuthenticationyesno
# 設定ファイルの修正を反映
sudo service sshd restart

SSH接続のポートを変更

SSH接続を受け付けるポート番号を変更

規定ではポート番号「22」がSSH接続に利用されますが、その分外部からの攻撃が真っ先に飛んでくるポート番号でもあるので、予防的に変更しておくことが推奨されています。

49152~65535番の中から任意のポート番号に変更しましょう。

これらの操作はKUSANAGI上で行います。

# 設定ファイルを修正
sudo vi /etc/ssh/sshd_config
項目名ビフォアアフター
Portコメントアウト中(22)任意のポート番号
# 設定ファイルの修正を反映
sudo service sshd restart

ファイアウォール設定の変更

これらの操作はKUSANAGI上で行います。

SSH接続を任意のポート番号で受け付けるよう設定を変更しましたが、まだファイアウォールの設定を変更していないのでこのままでは弾かれてしまいます。

# Firewalldを起動
systemctl start firewalld.service

# ポート番号の開放と永続化(55555は任意のポート番号に読み替え)
firewall-cmd --add-port=55555/tcp
firewall-cmd --permanent --add-port=55555/tcp

# 規定のSSH開放を削除と永続化
firewall-cmd --remove-service=ssh
firewall-cmd --permanent --zone=public --remove-service=ssh

# 解放済みのサービスを確認(SSHが表示されないこと)
firewall-cmd --list-services

# 解放済みのポート番号を確認(任意のポート番号が表示されること)
firewall-cmd --list-ports

# Firewalldの再起動
systemctl restart firewalld.service

受け付けるポート番号が変更されたため、以前の設定で接続していた現在のSSH接続はこのタイミングで弾かれるようになるはずです。なので、ローカル側でもSSH接続に用いるポート番号を更新しましょう。

vi ~/.ssh/ssh_config
# 以下の内容に変更
Host kusanagi
  HostName [ConoHa VPSで生成したサーバーのIP]
  User 任意のユーザーID
  Port 任意のポート番号
  IdentityFile ~/.ssh/id_kusanagi_rsa

再びSSH接続を行います。

# Firewalldの停止
systemctl stop firewalld.service

起動したままにしていたので、停止しておきます。停止を忘れたとしても冗長となるだけで特段の問題にはならないはずですが。

参考元

root権限以外のSSH接続の設定について以下を参考にしました。

SSH接続のポート番号変更について以下を参考にしました。