2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ConoHaでVPSを借りたので最初にやったこと

Last updated at Posted at 2020-04-14

はじめに

自宅にサーバを設置できないのでConoHaでVPSを借りました。
安さが決め手でした!
今回は安全に接続するため公開鍵でsshできるよう設定しました。

できるようになること

下記のコマンドだけでVPSにセキュアに簡単に接続できる。

ssh ホスト名

対象読者

  • 初めてVPS借りる人
  • 初めてパブリックな環境にサーバを立てる人

環境

  • VPS側ゲストOS:CentOS8
  • sshクライアント側OS:Ubuntu18.04.4 LTS (Bionic Beaver) ※WSL

やったこと

ざっくり下記の順番で進めていきます。

  1. sudo権限のユーザをつくる
  2. rootでsshできないようにする
  3. 公開鍵認証のみでsshできるようにする
  4. sshで利用するポート番号を変更する

sudo権限のユーザをつくる

VPS側のコンソールで操作します。
まずsudoの際にパスワードを入れなくていいように設定します。

visudo
#下記の部分がコメントアウトされているため外す
%wheel        ALL=(ALL)       NOPASSWD: ALL

任意のユーザを追加する。(例としてadminでやります)

useradd -m admin

パスワード設定

passwd admin

sudoのグループに設定する。

usermod -aG wheel admin

adminからパスワードなしでユーザ変更(su)するため、/etc/pam.d/suを編集する。

sudo vim /etc/pam.d/su
#下記の部分がコメントアウトされているため外す
auth            sufficient      pam_wheel.so trust use_uid

ユーザ変更できるか試す。

su - admin
su -

ユーザ変更できる。

rootでsshできないようにする

一応本作業前にそもそもクライアント側からsshできるか確認する。

ssh -l admin IPアドレス

rootでログインできないように設定する。

sudo vim /etc/ssh/sshd_config
#yesをコメントアウトnoを追記
#PermitRootLogin yes
PermitRootLogin no

設定を反映する。

sudo systemctl restart sshd

これでrootでは接続できなくなった。これからは作成したユーザのadminで接続する。

公開鍵認証のみでsshできるようにする

sshクライアント側で鍵を生成する。

cd ~/.ssh #なければ作成する
ssh-keygen -t rsa -f ホスト名 #パスワード設定は任意

鍵がある場所にて鍵に対して権限設定する。

chmod 600 ホスト名

生成した鍵をVPS側に転送する。

ssh-copy-id -i ~/.ssh/ホスト名.pub admin@IPアドレス

sshの設定ファイルを記述する。

sudo vim ~/.ssh/config
#下記設定を追記
Host ホスト名
  Hostname IPアドレス
  User admin
  IdentityFile ~/.ssh/ホスト名
  Port 22

VPS側でパスワード認証を許可しないように設定する。

sudo vim /etc/ssh/sshd_config
#yesをコメントアウトnoを追記
# PasswordAuthentication yes
PasswordAuthentication no

設定を反映する。

sudo systemctl restart sshd

sshで接続してみる。

ssh ホスト名

sshで利用するポート番号を変更する

デフォルトの22のままにしておくと攻撃されやすいため、VPS側ゲストOSおよびsshクライアント側のssh設定ファイルを変更しPortを他で利用のない任意の値に変える。
まずはsshクライアント側のssh設定ファイルを変更する。

sudo vim ~/.ssh/config
Host ホスト名
  Hostname IPアドレス
  User admin
  IdentityFile ~/.ssh/ホスト名
  Port 52222

次にVPS側ゲストOSの設定を変更する。
firewalldサービスにてsshは22で受信するよう制御されている。

cat /usr/lib/firewalld/services/ssh.xml
<?xml version="1.0" encoding="utf-8"?>
  <service>
    <short>SSH</short>
    <description>Secure Shell (SSH) is a protocol ...</description>
    <port protocol="tcp" port="22"/>
</service>

よって52222で受信するよう変更する。
変更する際には下記のようなルールがあるそうです。

CentOS 7 の firewalld では、/usr/lib/firewalld/ はシステムの初期設定を保存しておくディレクトリと位置付けており、ユーザーがカスタマイズした設定は /etc/firewalld/ 内に配置するようにデザインされています。 よって、設定を変更したssh.xml は /etc/firewalld/services/ に設置する必要があります。
CentOS 7 で sshd のポート番号を変更する方法

cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/
vim /etc/firewalld/services/ssh.xml
<?xml version="1.0" encoding="utf-8"?>
  <service>
    <short>SSH</short>
    <description>Secure Shell (SSH) is a protocol ...</description>
    <port protocol="tcp" port="52222"/>
</service>

設定を反映する。

firewall-cmd --reload

ssh で接続してみる。

ssh ホスト名

つながった!!

おわりに

お疲れさまでした!
sshポート変更時のfirewall設定が苦しみポイントでした・・・
自宅にサーバ置けない人、パブリッククラウドの従量課金制が怖い人にとっては月額低料金で気軽に使えるサービスなので、ぜひ利用してみてください!

参考サイト

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?