ニフクラ ブログ

ニフクラやクラウドの技術について、エンジニアが語るブログです。

これから始める人のためのニフティクラウド入門(Linuxサーバー作成編)

前回のこれから始める人のためのニフティクラウド入門(Windowsサーバー作成編)の記事では、Windowsサーバーの作成手順を解説しました。今回はLinuxサーバーを作成する場合の手順を解説します。

共通作業事項

以下の事項はWindowsサーバー作成と共通の事項なので、Windowsサーバー作成の手順を参考にしてください。

リージョンの選択

自分の利用したい機能などを考慮して、リージョンを選択してください。

付け替えIPアドレスの取得

事前に取得しておくと、サーバー作成時に割り当てることができて手間が省けます。

SSH公開鍵の登録

LinuxサーバーにはSSHの公開鍵認証を使って、リモートログインします。公開鍵はサーバー作成時に自動的に登録されるので、事前にSSH公開鍵を登録しておく必要があります。公開鍵は、ローカル側で作成しておいたものを登録する方法と、ニフティクラウドのダッシュボードで作成する方法があります。

作成済みのSSH公開鍵を登録する

ssh-keygenコマンドなどを使って、あらかじめ公開鍵を作成しておき、ニフティクラウドに登録します。公開鍵はRSA暗号で作成しておく必要があります。

LinuxでのSSH秘密鍵・公開鍵の作成

Linuxなどでは、ssh-keygenコマンドを実行すると、ユーザーのホームディレクトリに~/.sshディレクトリが作成され、その中にid_rsa.pubというファイル名で公開鍵が作成されます。このファイルをダッシュボードにアクセスしているWebブラウザから参照可能な状態にしておいてください。

[user@localhost ~]$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): ※Enterキーを入力
Enter passphrase (empty for no passphrase): ※パスフレーズを入力(表示されません)
Enter same passphrase again: ※パスフレーズを再入力(表示されません)
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx user@localhost.localdomain
The key's randomart image is:
+--[ RSA 2048]----+
|  .o*.oo         |
| . = +E.         |
|  = o..          |
| . o =           |
|  o = o S        |
|   + o o         |
|  . +   .        |
|   o .           |
|    .            |
+-----------------+
[user@localhost ~]$ ls .ssh
id_rsa  id_rsa.pub ※秘密鍵と公開鍵が作成されています

WindowsでのSSH秘密鍵・公開鍵の作成

Windowsでも、Tera TermやPuTTYなどのSSH接続が可能なツールはSSHの秘密鍵・公開鍵を生成する機能を備えているので、それらの機能を使って秘密鍵と公開鍵のペアを作成します。作成された秘密鍵と公開鍵は、適当なフォルダに保存しておきます。

以下はTera Termを使った秘密鍵・公開鍵の作成例です。

sshkeygentt

SSHキーのインポート

ダッシュボードから「SSHキー」を選択し、「SSHキーインポート」ボタンをクリックします。SSHキー名を入力し、「選択」ボタンをクリックして、ファイルダイアログから公開鍵のファイルを開きます。必要ならばメモを入力して、「インポートする」ボタンをクリックします。

sshkeyimport

ニフティクラウドのダッシュボードでSSHキーを作成

SSHの公開鍵と秘密鍵をニフティクラウドのダッシュボードで作成します。

ダッシュボードから「SSHキー」を選択し、「SSHキー作成」ボタンをクリックします。SSHキー名とパスフレーズ、必要ならばメモを入力して、「作成する」ボタンをクリックします。

パスフレーズは作成される秘密鍵を使用する際に入力が要求されます。パスフレーズを正しく入力しないと秘密鍵は有効化できないので、万が一、秘密鍵が漏洩した場合などに勝手に使われないようにする効果があります。もちろん、パスフレーズに対して総当たり攻撃をされると秘密鍵を有効化できてしまうので、秘密鍵が漏洩した場合には速やかに公開鍵を差し替えるなどの対応が必要です。

sshkeygen

作成すると、秘密鍵が送られてくるので、ダウンロードして保管しておきます。ファイル名は「SSHキー名_private.pem」です。この秘密鍵は、後ほどLinuxサーバーに接続する際にクライアント側で使用します。

どちらの方法がよいか

2つの方法は似ていますが、後々の運用を考えると違いがあります。結論から言うと、前者、作成済みのSSH公開鍵を登録する方がよいでしょう。

理由は、公開鍵はそれぞれのリージョンごとに登録する必要があるからです。ダッシュボードでSSHキーを作成すると、ダウンロードされるのは秘密鍵だけです。何も工夫しないでいると、各リージョンごとに秘密鍵と公開鍵のペアを作成しなければならず、秘密鍵の管理や利用が煩雑になってしまいます。

秘密鍵から公開鍵を後から生成することもできますが、そのような作業を後から行うぐらいなら、最初から手元のツールを使って秘密鍵と公開鍵を作成し、公開鍵を登録する方が楽でしょう。

サーバーの作成

事前の準備が終わったら、サーバーの作成を行います。

イメージの選択

Linuxサーバーを作成するために、CentOS、Ubuntu、Red Hat Enterprise Linux、Debian GNU/Linuxなどのイメージが用意されています。また、各種アプリケーションがプリインストールされたイメージも用意されているので、目的に応じて選択してください。

今回はCentOS 7.1 Plainを選択します。

choiceos

サーバータイプの選択

サーバーを作成するゾーンを選択します。

サーバータイプは、vCPUと割り当てメモリの組み合わせで決定します。 用意されているCentOSのイメージは比較的少ないメモリで動作します。とりあえず動かしてみるだけなら、Type-eファミリーの1vCPU、メモリ512MBが割り当てられるe-miniでもよいでしょう。あとは動作させるアプリケーションなどの必要に応じてサーバータイプを変更してください。

type

各種サーバー設定

サーバーの名前などを設定します。

Linuxサーバーの場合、SSHキーを選択します。選択された公開鍵は、作成されたLinuxサーバーの管理者ユーザーrootのホームディレクトリ以下に自動的に配置されます。

ネットワークの設定で、あらかじめ取得しておいた付け替えIPアドレスを割り当てることができます。

linuxserverconfig

設定を確認し、「作成する」ボタンをクリックします。サーバーが作成され、OSが起動します。

linuxsercerconfirm

sshコマンドを使用したリモートログイン

起動したLinuxサーバーにSSHサーバーにリモートログインします。

sshコマンドならば、以下のようにしてログインします。

$ ssh root@サーバーのIPアドレス

接続時にパスフレーズの確認が行われたら、公開鍵認証で接続できています。正しいパスフレーズを入力して、ログインしてください。

以下、実行例です。

$ ssh root@<em>サーバーのIPアドレス</em>
The authenticity of host '<em>サーバーのIPアドレス</em> (<em>サーバーのIPアドレス</em>)' can't be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Are you sure you want to continue connecting (yes/no)? yes
Enter passphrase for key '/home/<em>user</em>/.ssh/id_rsa': 
Warning: Permanently added '<em>サーバーのIPアドレス</em>' (RSA) to the list of known hosts.
Last login: Mon Dec 26 15:50:01 2016 from <em>クライアント側のIPアドレス</em>

初回接続時のホスト鍵の処理

SSH接続時にサーバーからホスト鍵が送られてきます。手元に同じホスト鍵が保管されていれば何も表示されませんが、初回接続時にはホスト鍵のフィンガープリント(指紋の意。実際には鍵データのハッシュ値)が表示され、接続を継続してもよいか確認が行われます。接続先IPアドレスなどに間違いがなければ、「yes」と入力して接続を行ってください。 送られてきたホスト鍵は~/.ssh/known_hostsファイルに保管されます。

sshコマンド使用時の秘密鍵の扱い

サーバーで選択した公開鍵と対になる秘密鍵が、~/.ssh/id_rsaファイルとして配置されていることが前提となります。もし、ダッシュボードでSSHキーを作成した場合には、ダウンロードした○○.pemファイルのファイル名を変更して、配置しておいてください。その際に、所有権がすべてユーザーのものであること、パーミッションが~/.sshが700、~/.ssh/id_rsaが600であることなどが必要です。SSHキーをダッシュボードで作成せず、ローカルで作成すると、このあたりの設定の煩雑さは回避できます。

WindowsのGUIツールを使用

WindowsでSSHを使うには、Tera TermやPuTTYが使用されます。歴史的な経緯や、日本語の情報が多いことからTera Termが使われることが多いように思います。今回もTera Termを使ってリモートログインしてみます。

Tera Termを起動すると、接続ダイアログが表示されます。「ホスト」にサーバーのIPアドレスを入力して、「OK」ボタンをクリックします。

ttconnect

sshコマンド同様、サーバーのホスト鍵の確認が行われますので、「続行」ボタンをクリックして接続を行います。

tthostkey

SSH認証のためのダイアログが表示されるので、「ユーザー名」には「root」、「パスフレーズ」には秘密鍵に設定したパスフレーズを入力します。認証方法として「RSA/DSA/ECDSA/ED25519鍵を使う」をチェックし、「秘密鍵」ボタンをクリックします。ファイルダイアログが開くので、保管してある秘密鍵ファイルを選択し、「OK」ボタンをクリックします。

ttkeyauth

Tera Term使用時の秘密鍵の扱い

Tera Termでは接続時にファイルダイアログで秘密鍵ファイルを選択します。そのため、秘密鍵ファイルはアクセス可能な場所であれば、どこに保管しておいても大丈夫です。ファイル名なども特に指定はありませんので、分かりやすいファイル名にして保管しておきましょう。