さくらのVPSにMACのターミナルからSSH接続する方法

今回はMACのターミナルから、さくらのVPSにssh接続するための初期設定をご説明します。

さくらのVPSコントロールパネルにアクセスします。
コントロールパネルの右上「各種設定」の「OSインストール」から「標準OSインストール」を選択。
今回、インストールするOSは「CentOS x86_64」にします。

コントロールパネルの「>_コンソール」から「>_シリアルコンソール」を選択。
シリアルコンソールを立ち上げるとアップデートが始まりますので、全てのアップロードが完了後、OSインストール時に設定した新しい管理ユーザのパスワードでログインします。

aa1-234-56789.vs.sakura.ne.jp login : root
Password : (新しい管理ユーザで設定したパスワードを入力)

ログインできると下記の通り表示されます。

SAKURA Internet [Virtual Private Server SERVICE]

[root@aa1-234-56789 ~]#

VPSの日本語化

初期状態では、英語表示のみとなりますので、VPS応答時などの言語を日本語化します。

[root@aa1-234-56789 ~]# vi /etc/sysconfig/i18n

LANG=”C” の C の文字を削除し、 ja_JP.UTF-8 に変更します。
次に、ESCキーを押して編集モードを終了させ、 :wq を入力し、Enterキーを押して保存します。

LANG="ja_JP.UTF-8"
SYSFONT="latarcyrheb-sun16"

一度、VPSを再起動します。

[root@aa1-234-56789 ~]# reboot

一般ユーザの作成

管理者でログインして、一般ユーザを作成します。今回はユーザ名をsakuraにします。

[root@aa1-234-56789 ~]# useradd sakura

次にパスワードを設定します。

[root@aa1-234-56789 ~]# passwd sakura

作成した一般ユーザを管理者グループ(Wheel)に追加します。

[root@aa1-234-56789 ~]# usermod -G wheel sakura

作成した一般ユーザが管理者グループに追加されたか確認します。

[root@aa1-234-56789 ~]# groups sakura
sakura : sakura wheel

管理者グループ(Wheel)がsudoコマンドを使用できるように設定します。

[root@aa1-234-56789 ~]# visudo

編集画面が開いたら下記箇所の#(コメントアウト)を削除します。

# %wheel        ALL=(ALL)       ALL

(↓行頭にある#を削除)

%wheel        ALL=(ALL)       ALL

設定を保存します。
これで管理者グループに追加されているユーザはsudoを使えるようになります。

さらに、管理者グループ(Wheel)だけがsuコマンドを使用できるように設定します。

[root@aa1-234-56789 ~]# vi /etc/pam.d/su
#auth           required        pam_wheel.so use_uid

(↓行頭にある#を削除)

auth           required        pam_wheel.so use_uid

設定を保存します。
これで管理者グループに追加されているユーザのみがsuコマンドを使えるようになります。

MACからSSH接続するために必要な鍵の設定

MACからSSH接続するために必要な鍵の設定を行います。
まずは、MAC側でターミナルを立ち上げて、下記の通り鍵を作成します。

$ ssh-keygen

MAC内の鍵を保存する場所と鍵のファイル名を聞かれます。
そのままでも大丈夫ですが、/Users/user-name/.sshのディレクトリに分かりやすいように”id_rsa_sakura_vps”という名前を付けて鍵を作成します。

Enter file in which to save the key (/Users/user-name/.ssh/id_rsa): /Users/user-name/.ssh/id_rsa_sakura_vps

パスフレーズを聞かれるので、入力します。パスフレーズは鍵を使用する時に設定しますので、複雑かつ忘れないものを設定してください。

Enter passphrase (empty for no passphrase): 
Enter same passphrase again:

鍵が問題なく作成されているか確認します。

$ ls -al /Users/user-name/.ssh
-rw-------   1 user-name  staff  1766  1  3 07:20 id_rsa_sakura_vps
-rw-r--r--   1 user-name  staff   400  1  3 07:20 id_rsa_sakura_vps.pub

以上でMAC側での作業は終了です。

次に、MACで作成した鍵の公開鍵をVPSに登録します。
管理者ユーザではなく、先程作成した一般ユーザでログインしてください。
.sshディレクトリを作成します。

[sakura@aa1-234-56789 ~]$ mkdir .ssh

作成した.sshディレクトリの権限設定を変更します。

[sakura@aa1-234-56789 ~]$ chmod 700 .ssh

.sshディレクトリ内にauthorized_keysというファイルを作成します。

[sakura@aa1-234-56789 ~]$ vi .ssh/authorized_keys

authorized_keysの編集画面が表示されますので、先程MACで作成した公開鍵(id_rsa_sakura_vps.pub)の内容を貼り付けて保存します。
保存後、authorized_keysの権限設定を変更します。

[sakura@aa1-234-56789 ~]$ chmod 600 .ssh/authorized_keys

sshdの設定を変更する

sudoコマンドを使用してsshd_configの設定を変更します。

[sakura@aa1-234-56789 ~]$ sudo vi /etc/ssh/sshd_config

sshでアクセスする際のポート番号を変更します。
今回は、55522というポート番号を設定してみます。

#Port 22

↓

Port 55522

管理者権限(root)でsshから直接接続できないようにします。

#PermitRootLogin yes

↓

PermitRootLogin no

鍵交換方式でログインする設定を行ったので、パスワード認証によるログインを禁止

PasswordAuthentication yes

↓

PasswordAuthentication no

変更した設定を適用するため、sshdを再起動します。

[sakura@aa1-234-56789 ~]$ sudo service sshd restart

以上でsshdの設定変更は完了です。

MACのターミナルからssh接続する

MACのターミナルから先程設定したポート番号を指定してVPSに接続をしてみます。

$ ssh sakura@VPSのIPアドレス -p 55522

接続しようとして、下記のようなエラーが発生しました。
このエラーは、先程設定したsshのポート番号を開放していないため発生します。

ssh: connect to host VPSのIPアドレス port 55522: Connection refused

先程設定したsshのポート番号を開放するため、VPSのコンソールに戻り、下記の通りiptablesの設定を変更していきます。

[sakura@aa1-234-56789 ~]$ sudo vi /etc/sysconfig/iptables

先程設定したsshのポート番号に変更。

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

↓

-A INPUT -m state --state NEW -m tcp -p tcp --dport 55522 -j ACCEPT

変更した設定を適用するため、iptablesを再起動します。

[sakura@aa1-234-56789 ~]$ sudo /etc/rc.d/init.d/iptables restart

もう一度、MACのターミナルから先程設定したポート番号を指定してVPSに接続をしてみます。

$ ssh sakura@VPSのIPアドレス -p 55522

MACのターミナルで次の通り表示されればVPSへの接続成功です。

SAKURA Internet [Virtual Private Server SERVICE]

[sakura@aa1-234-56789 ~]#

以上でMACのターミナルから、さくらのVPSに接続して作業することができます。

Postfixの送信メールキューを確認・削除する

エイリアス設定により、その設定されたメールアカウント宛に送られてきたメールは、別のメールアカウントのメールボックス、または別のメールアドレスに転送することができます。
先日、そのエイリアス設定を利用して、Gmailのメールアドレス宛にメール転送設定をしたところ、問題なくメール転送はできたのですが、下記のようなエラーがメールログに数回だけ残っていました。

Jul  7 00:01:59 example postfix/smtp[18525]: D627D72C30F: to=<転送先メールアドレス>, 
orig_to=<転送元メールアドレス>, relay=gmail-smtp-in.l.google.com[IPアドレス]:25, 
delay=1.8, delays=0/0.01/0.74/1, dsn=5.7.1, 
status=bounced (host gmail-smtp-in.l.google.com[IPアドレス] said: 550-5.7.1 [IPアドレス 3] 
Our system has detected that this message is 550-5.7.1 likely unsolicited mail. To reduce the amount of spam sent to Gmail, 550-5.7.1 this message has been blocked. Please visit 550 5.7.1
https://support.google.com/mail/answer/188131 for more information. h785324862185.135 - gsmtp (in reply to end of DATA command))

エラーメッセージの内容は、「Gmailのシステムが送信されてきたメールを確認したところスパムメールとして検出してブロックしました。詳細については、https://support.google.com/mail/answer/188131を見てください。」ということ。Googleの詳細ページを確認したところ、たしかに分かり易く理由が記載されていました。

エラー発生の原因

エイリアス設定により全てのメールをGmailに転送するよう設定しましたが、その転送されたメールの中にスパムメールが混ざっていて、Gmailがそのスパムメールをブロックしたことによりエラーが発生してしまいました。
通常であれば気にすることではないのですが、今回は自分が所有するメールサーバーから転送したメールがGmailにスパムメールとして判定されているため、送信メールキューに送信できなかった迷惑メールが溜まってしまい、そのままにしておくと再送処理をして再度エラーが発生してしまう可能性があります。
また、その状況が続いてしまうとGmailを管理しているGoogleにも「スパムメールを送信するメールサーバー(踏み台にされている)」と誤判定されてしまう可能性があるため、早急に送信メールキューが溜まっていないか確認し、溜まっている場合にはキューを削除する必要があります。

Postfixの送信メールキュー確認

まずは、下記のコマンドでメールキューに溜まっていないか確認します。

[root@ ~]# postqueue -p

メールキューが溜まっていない場合は、下記の表示がされます。

Mail queue is empty

メールキューが溜まっている場合は、そのメール情報が表示されます。

-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
DAE7FA058F 864      Thu Jul  7 00:01:59  hoge@example.com
(connect to example.com[IPアドレス]:25: Operation timed out)
hoge@example.com
-- 7 Kbytes in 2 Requests.

それでは、溜まっている送信メールキューを削除します。
特定のメールキューを削除するには、下記のようにします。

[root@ ~]# postsuper -d [キューID]

キューIDは、postqueueコマンドで確認したときに表示された先頭の英数字のことです。
例として、上記のメールキューを削除するには、下記のようにします。

[root@ ~]# postsuper -d DAE7FA058F

すべてのメールキューを一括で削除するには、下記のようにします。

[root@ ~]# postsuper -d ALL

もしメールキューに溜まったメールを強制再送する場合は、下記のようにします。

[root@ ~]# postfix flush

以上が、Postfixの送信メールキューを確認・削除する方法です。

メールサーバーとWebサーバーを分ける設定方法

今回は、一つの独自ドメインで、メールサーバーとWebサーバーを分ける設定方法を紹介します。
また、メールは「さくらのメールボックス」、Webは「さくらのVPS」、ドメイン管理は「お名前.com」という環境を前提に説明します。

構成は、下記のとおりです。
【メールサーバー】さくらのメールボックス(IPアドレス:192.0.2.0)
【Webサーバー】さくらのVPS(IPアドレス:203.0.113.0)
【DNSサーバー】お名前.com(独自ドメイン:example.com)

設定手順は、下記のとおりです。

  1. さくらのメールボックスのドメイン設定
  2. さくらのVPSのWeb設定
  3. お名前.comのDNSレコード設定
  4. メールとWebの確認
  5. SPFレコードの確認

それでは設定をはじめます。

1.さくらのメールボックスのドメイン設定

さくらのメールボックスでメールを利用するため、ドメインの設定を行ないます。
さくらのメールボックスの管理画面にログインし、左メニューの「サーバー情報の表示」から「サーバに関する情報」を開き、IPアドレスをメモしてください。また、ページ左上に表示されている初期ドメインもメモしてください。
sakura-mailbox-image01

さくらのメールボックスで使用する独自ドメインを設定します。
管理画面の「ドメイン設定」から「新しいドメインの追加」を選択。
sakura-mailbox-image02

「5.他社で取得したドメインを移管せずに使う・属性型JPドメインを使う」の「ドメインの追加へ進む」を選択。
sakura-mailbox-image03

「他社で取得した独自ドメインの追加・属性型・地域型JPドメインの追加」のドメイン名入力欄に設定したい独自ドメインを入力し、「送信する」をクリックします。
sakura-mailbox-image04

ドメイン追加完了後、ドメインの詳細設定で「SPFレコードを利用する」をチェックします。
さくらのメールボックスの設定は、これで完了です。メールアドレスの作成などは、通常どおり行なってください。

2.さくらのVPSのWeb設定

次は、さくらのVPSでWebサイトを利用するため、Webサーバーの設定を行ないます。
さくらのVPSでWebサーバーを構築していない場合は、「Webサーバーの構築」の内容に沿って設定をしてください。
今回は、既にさくらのVPSで独自ドメインのWebサイトを運用していて、新たに独自ドメイン(example.com)を追加するという想定で説明します。

それでは設定を行います。
root権限でhttpd.confを開いてください。

[root@ ~]# vi /etc/httpd/conf/httpd.conf (httpd.confを編集)

httpd.confのファイル末尾近くにバーチャルホストの設定項目があります。
#NameVirtualHost *:80 と記載された行の#を削除して、名前ベースのバーチャルホスト機能を有効にします。

#
# Use name-based virtual hosting.
#
NameVirtualHost *:80 (行頭にある # を削除)
#
# NOTE: NameVirtualHost cannot be used without a port specifier
# (e.g. :80) if mod_ssl is being used, due to the nature of the
# SSL protocol.

次に、httpd.confのファイル末尾に追加ドメインの設定を入力します。
名前ベースのバーチャルホスト機能を使用する場合、追加するドメインだけでなく、既に運用されていたドメインも、バーチャルホストとして設定する必要があります。
例として、既に運用されていたドメインをexample.net、コンテンツを置くディレクトリを/var/www/htmlとします。
また、追加するドメイン(example.com)のコンテンツを置くディレクトリを/var/www/example.comとします。
ハイライトで表示した部分を追加してください。

#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for requests without a known
# server name.
#
#
#    ServerAdmin webmaster@dummy-host.example.com
#    DocumentRoot /www/docs/dummy-host.example.com
#    ServerName dummy-host.example.com
#    ErrorLog logs/dummy-host.example.com-error_log
#    CustomLog logs/dummy-host.example.com-access_log common
#

(↓既に運用されていたドメインについて)
<VirtualHost *:80>
     ServerAdmin root@example.net
     DocumentRoot /var/www/html
     ServerName www.example.net
     ServerAlias example.net
</VirtualHost>

(↓新たに追加するドメインについて)
<VirtualHost *:80>
     ServerAdmin root@example.com
     DocumentRoot /var/www/example.com
     ServerName www.example.com
     ServerAlias example.com
</VirtualHost>

ファイルの末尾に追加したらファイルを保存して終了してください。

追加するドメイン(example.com)のコンテンツを置くディレクトリを作成します。
また、ディレクトリのオーナーをFTP接続に使用するユーザーアカウントに変更します。
例として、「sakura」というユーザアカウントを使用してFTP接続を行い、コンテンツをアップロードすることにします。

[root@ ~]# mkdir /var/www/example.com (追加するドメインのディレクトリ作成)
[root@ ~]# chown sakura /var/www/example.com (ディレクトリのオーナーをsakuraに変更)

以下のコマンドを実行し、httpd.confの書き換えた内容を有効にします。

[root@ ~]# service httpd reload

Webサイトを利用するための設定は完了です。

3.お名前.comのDNSレコード設定

メールサーバーとWebサーバーを分ける設定で一番重要なのがDNSレコードの設定です。
下記イメージのように、DNSレコードの内容により、メールの場合は「さくらのメールボックス」、Webの場合は「さくらのVPS」を使用するという割当を行なうからです。

separate-dns-image

それでは、DNSレコードの設定方法です。
お名前.comにログインして、ドメイン設定画面の左メニュー「DNS関連機能の設定」→「DNSレコード設定を利用する」にページ移動します。

下記のようにDNSレコードを設定します。
※メールサーバー(さくらのメールボックス)IP:192.0.2.0
※Webサーバー(さくらのVPS)IP:203.0.113.0
※1.さくらのメールボックスのドメイン設定の最初にメモした初期ドメインは、MXレコードのVALUE項目に入力します。

ホスト名 TYPE TTL VALUE 優先
example.com A 3600 203.0.113.0
www.example.com A 3600 203.0.113.0
example.com MX 3600 (さくらのメールボックス初期ドメイン) 10
example.com TXT 3600 v=spf1 +ip4:192.0.2.0 -all

ネームサーバーも転送用のネームサーバーに変更します。
dns-record-setting-change-confirm

これでDNSレコード設定は完了です。
DNSレコード設定内容が浸透するまで数時間~72時間かかりますので、それまで待ちます。

4.メールとWebの確認

DNSが浸透したら、独自ドメインで問題なくメール使えることと、Webサイトが閲覧できることを確認してください。

5.SPFレコードの確認

また今回、メール送信ドメイン認証としてSPFレコードを設定していますので、その設定に間違いがないかSPF Surveyorで確認します。
このWebサイトにドメインを入力すると、SPFレコードの設定に間違いがないか確認してくれます。
問題がない場合は、そのドメインからのテストメールを自身に送信し、受信したメールのAuthentication-Resultsヘッダに「pass」と記載されていれば、SPFレコードは適切に設定できています。

以上が、メールサーバーとWebサーバーを分ける設定方法となります。