ConoHa で VPS サーバーを追加した場合の初期設定について説明します。
あくまで一例です。
目次
1. サーバーを追加する
まず、ConoHa の ログイン ページからログインします。
画面左上にある「サーバー追加」を押します。

今回は以下の項目を選択しました。(主な項目だけ抜粋)




SSH のキーについて
SSH というのは、暗号化通信プロトコルの1つです。この暗号化通信を使って遠隔のサーバーにログインすることができます。そして、事前に作成しておいた「キー(鍵)」を使ってログイン時の認証を行うことができます。
この「キー」というのは、「公開鍵」と「秘密鍵」とがペアになったもので、どちらも複雑なデータのカタマリです。「秘密鍵」は自分だけが持ち、「公開鍵」は文字通り誰に渡しても構いません。通信する際には、送信者が送りたいデータを片方の鍵で暗号化して送り、受け取った方はもう一つの鍵で復号することができます。
SSH Key
「SSH Key」のところは「使用しない」でも構いません。その場合は、SSHでのログイン認証にパスワードを入力します。
しかし、「キー(鍵)」を使えば、ログイン時にパスワードを入力する必要がなくなり、しかもこの「キー」を持っていないとログインできなくなるため、サーバーがより安全になります。
既に SSH の鍵ファイルを持っている場合や今から作成して使いたい場合は、「キーを新規作成」を選ぶと「キーの作成」もしくは「キーのインポート」をこの場で行うことができます。
上記の画面では、事前に [セキュリティ] – [SSH Key] メニューから公開鍵ファイルをインポートしてあったので、「キーの選択」からそのキーを指定しています。
2. SSH でログインする
では、追加したサーバーにログインします。
SSHでログインするためには専用のアプリケーションを使います。Windows でしたら、Tera Term や Poderosa、PuTTY といったソフトウェアがよく使われています。また、Windows 10 では WSL (Windows Subsytem for Linux) といったツールを使うこともできます。Mac でしたら標準の terminal から sshコマンドを使ってログインすることができます。
これらのアプリケーションを立ち上げたら、その中で ssh
コマンドを使ってサーバーにログインします。
$ ssh root@133.130.xxx.xxx
このコマンドは以下のようなフォーマットになっています。
各項目は以下のようになっています。
接続に使用するユーザーのユーザー名 | root ※ この時点では root しかユーザーがいません。 |
---|---|
そのユーザーのパスワード | サーバーを追加する時に SSH Key を指定しなかった場合は、ssh コマンド実行時にパスワードを入力します。パスワードは、サーバーを追加した時に設定しているはずです。 |
サーバーのIPアドレス | ConoHa管理サイトの [サーバー]メニューを開き、目的のサーバーをクリックすると「IPアドレス」欄に表示されています。 |
-i
オプションを使います。例えばこんな感じです。
$ ssh -i path/to/秘密鍵ファイル ユーザー名@サーバーのIPアドレス
では、実際にログインしてみます。
$ ssh root@133.130.xxx.xxx
================================================
Welcome LAMP application!
DocumentRoot: /var/www/html
URL: http://133.130.xxx.xxx/
phpinfo: http://133.130.xxx.xxx/phpinfo.php
MySQL root password: xxxxxxxxx
Enjoy!
To delete this message: rm -f /etc/motd
================================================
今回は、サーバーを追加する時に「アプリケーション」として「LAMP (PHP)」を指定していたため、この時点で Apache, MySQL, PHP がインストールされており、それに関連する情報が表示されています。これらはどこかにメモしておきましょう。
これを見ると、既にウェブサイトが公開されているようです。「URL」と「phpinfo」という部分がそのURLになっています。実際にアクセスしてみると、前者は特にたいした情報は表示されませんが、後者は PHPの設定情報が丸見えになっているので、何も表示しないようにしておきました。
$ vim /var/www/html/phpinfo.php
として phpinfo.php
ファイルを開くと、以下の内容が記述されているので、
<?php phpinfo();
PHPコードをコメントアウトします。phpinfo()
の前にスラッシュを2つ追記するだけです。以下のようになります。
<?php //phpinfo();
また、このままだとログインする度に先ほどの表示がされますが、この表示はいらないので以下のようにして表示しないようにします(この表示の一番下にこのコマンドについて記載されています)。
$ rm -f /etc/motd
3. ユーザーの追加
ここでは foo
というユーザーを追加します。
$ useradd foo
$ passwd foo
$ gpasswd -a foo wheel
最後のコマンドでは、whell
グループに foo
ユーザーを追加しています。
今回の環境の場合、これだけで foo
ユーザーは、sudo
コマンドが使えるようになりました。
以後、foo
ユーザーでログインし直して、各コマンドを sudo
で実行することもできますが、コマンド毎に sudo
を付けるのが面倒なので、このまま root
ユーザーで作業することとします(一部違うところもありますが)。
4. sshd のポート番号を変更
上の方でも書いた通り、SSH というのは暗号化通信を行うためのプロトコルなのですが、デフォルトでは 22番のポートを使って通信を待ち受けます(コンピュータは「ポート」と呼ばれるドアを用意して通信を行います)。これをこのままにしておくと世界中から 22番ポートに対して SSHでのログインを試みようとするアクセスがやってきて危険です。そのため、「SSH で使用するポート番号を変える」という対策がよく行われます。サーバー側のポート番号を変えても、クライアント側がその番号を知っていれば、問題なく SSHでアクセスすることができます。
sshd
というのは、サーバー側で常時稼働している SSH通信プログラムを指しています。SSHで通信するのは、このプログラムが動いている必要があります。
sshd
の設定ファイルを編集します。
$ vim /etc/ssh/sshd_config
ポート番号を変更するため「Port」でポート番号を指定します。既に「Port」の記述がある場合はそこを書き換えます。以下では、10022
に変更しています。
Port 10022
この CentOS 7 では、firewalld という「通信をフィルタリングするためのプログラム」が動いています。そのため、外部のコンピュータと通信を行うためには、firewalld を使って「ポートを開ける」という作業が必要になります。
firewalled
で sshd のポート番号を変更するには、以下の手順で作業します。
まず、sshd に関するファイル /usr/lib/firewalld/services/ssh.xml
を、/etc/firewalld/services/
以下にコピーします。
$ cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/
そして、設定を変更するには /etc/firewalld/services/ssh.xml
の方を編集します。
こちらを追加することで、元のファイルの設定を上書きするような動作になります。
$ vi /etc/firewalld/services/ssh.xml
port="xxxx"
のところを書き換えます。
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>SSH</short>
<description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description>
<port protocol="tcp" <span class="huto">port="10022"</span>/>
</service>
firewalld
の設定ファイルを再読み込みさせます。
$ firewall-cmd --reload
sshd を再起動します。
$ systemctl restart sshd.service
5. sshd の設定をより安全なものにする
sshd をより安全な設定にします。
そのために、sshd の設定ファイルを編集します。
$ vi /etc/ssh/sshd_conf
以下を追記します。
PermitRootLogin no
Protocol 2
PasswordAuthentication no
- この1行目では、root ユーザーのログインを許可しないようにします。
- 2行目では、sshd のプロトコルとしてより安全なバージョンのみを許可しています。
- 3行目では、パスワードによるログインを許可しないようにします。
sshd を再起動します。
$ systemctl restart sshd.service
6. ホスト名を変更
ホスト名を、foo.example.com
に変更する場合は以下のように作業します。
まず、hostnamectl
コマンドを実行します。
$ hostnamectl set-hostname foo.example.com
/etc/hosts
を編集します。
$ vim /etc/hosts
以下を追記します。
133.130.xxx.xxx foo foo.example.com
7. パッケージの更新
CentOS が持っているパッケージ管理ツール yum を更新しておきます。
$ yum update
8. PHP のバージョンを 7 にする
デフォルトでは PHP 5.6 が入っていましたが、PHP 7.2 に変更します。新しい機能・文法が使えるようになりますし、動作も速くなるはずです。
PHP 5.6 関連のパッケージを削除します。
$ yum remove php56u*
PHP 7.2 関連のパッケージをインストールします。
$ yum install \
mod_php72u \
php72u-cli \
php72u-common \
php72u-devel\
php72u-gd \
php72u-imap \
php72u-json \
php72u-mbstring \
php72u-mysqlnd \
php72u-pdo \
php72u-process \
php72u-xml
9. Apache に SSL を導入
Apache で TLS/SSL を導入して、https
でウェブサイトが公開されるようにします。
まず、mod_ssl をインストールします。
$ yum install mod_ssl
firewalld を使って、ポート 80番(http), 443番(https) を開けます。
80番は最初から空いているはずではありますが、以下のコマンドをセットで実行しました。
$ firewall-cmd --zone=public --add-port=80/tcp --permanent
$ firewall-cmd --add-service=http --permanent
$ firewall-cmd --zone=public --add-port=443/tcp --permanent
$ firewall-cmd --add-service=https --permanent
$ firewall-cmd --reload
これで、ウェブサーバーである Apache で SSL証明書を使う準備はできました。
次に、Let’s Encrypt を導入して、その SSL証明書を作成します。
ここでは、foo
ユーザーを使い、~/work/cerbot
ディレクトリで作業するとします。
まず、Let’s Encrypt が開発している certbot
をインストールします。
$ sudo yum install certbot
作業ディレクトリに移動します。
$ mkdir -p ~/work/certbot
$ cd ~/work/certbot
Apache を停止しておきます。
$ sudo systemctrl stop httpd
ここで、目的のドメインのDNS情報において、このドメインに対するサーバーのIPアドレスが、ConoHa のサーバーになっていない場合は、ConoHa のサーバーを指すように変更します(Aレコード)。この変更がご使用のネームサーバー上に反映されるまで待つ必要がありますので、少し早めに変更しておくとよいかもしれません。
DNSの変更が反映されたら、次のコマンドで SSL証明書を生成します。
$ sudo certbot certonly --standalone -d foo.example.com
メールアドレスなど聞かれますので、指示に従って入力します。
SSL証明書が生成されたら、Apache の設定ファイルの中で、このSSL証明書ファイルを使用するように書き換えます。
$ sudo vim /etc/httpd/conf.d/ssl.conf
通常は、だいたい以下のような記述になります。
SSLCertificateFile /etc/letsencrypt/live/foo.example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/foo.example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/foo.example.com/chain.pem
Apache を起動します。
$ sudo systemctrl start httpd
10. メールの送信テスト
念の為、このサーバーからメールが送信できるかテストします。
今回の環境では、メジャーなメールサーバーである postfix が既にインストールされて稼働していました。
この postfix に付属している sendmail
コマンドでメールを送信してみます。
以下のように入力してください。メールが送信できます。
sendmail -t <<EOL
From: xxxx@example.com
To: you@example.jp
Subject: new Test mail
Hello!!
EOL
Gmail などでこのメールを受信し、迷惑メールと認識されてしまった場合は、サーバーで使っているドメインのDNS情報に、SPFレコード を記述しておきましょう。
記述して反映させた後は、Sender Policy Framework (SPF) Record Lookup といったサイトで記述した内容をチェックすることもできます。
SPFとは?
Wikipedia の説明を借りると、「SPF (Sender Policy Framework)とは、電子メールにおける送信ドメイン認証のひとつ。差出人のメールアドレスが他のドメイン名になりすまししていないか検出する技術」です。
まず、メール送信側サーバーとなるドメインの TXTレコードに、「このドメインからメールを送信することのありえるサーバーのIPアドレス」などを記述しておきます。メーラーソフトはメールが届いたら、送信元になっているサーバーのドメインの TXTレコードをチェックして、実際の送信元サーバーのIPアドレスにとそこに記述されたIPアドレスを照会し、問題ないメールかどうかを判断することができます。
11. おわりに
ConoHa で CentOS 7 のサーバーを追加した時の設定について書きました。
以下のページでも書きましたが、ConoHa は初期費用がなく、時間単位での課金となるため気軽にサーバーを追加することができます。しかも、1ヶ月間使い続けた場合の料金も特に高いわけでもありません。インターネットに接続された状態のサーバーを一時的に使いたい場合にもピッタリです。
只今、「梅雨トク!キャンペーン」実施中です!
期間:2018年7月4日(水)12時まで
期間中に対象のConoHaカードを購入し、クーポンコードを登録した方限定でVPSが最大1ヶ月間無料で使えるクーポンがプレゼントされます!