58
81

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 5 years have passed since last update.

ConoHa と CentOS7 でサーバー構築

Last updated at Posted at 2016-06-09

まえがき

あ^〜!サーバーとかよくわからない〜!!!
でもなんか「美雲このはちゃん」っていうおっさん清楚可愛い娘がいるらしいじゃん!
兎にも角にも、お近づきになるにはVPS契約するしかないね!!!

このドキュメントについて

Linux 初心者向けに ConoHa VPS で CentOS7 の環境構築を説明する記事です。
大半は CentOS の説明になると思うので、他の VPS についても適宜読み替えて頂ければ大丈夫かと思います。
決して GMO社 のステマではないので、AWS やさくらのVPS も良いかと思いますよ!(元も子もない)
VPS を契約する際は価格や性能、選択できるリージョンなどで比較するのが良いかと思いますが、個人的にはコントロールパネルの UI にこだわりが感じられるのと、このはちゃんというキャラクターを広報に利用しているという、まったくもって VPS と関係ない点において ConoHa に好感を持っています(こういうの地味に大事ですよね)。

前提条件

これから説明する作業を行うためには以下の知識や環境が必要です。

Terminal の基本操作

黒い画面に白や緑の文字がでてくるアレです。ハッカーみたいなやつ。
Windows の方は詳しくないですが、確か PuTTY や TeraTerm をインストールすれば良いはずです。
(知識のある人は zsh + zprezto あたりも導入しておくと快適かもですよ。)

vi (vim) の基本操作

vi (vim) はシンプルなテキストエディターです。
これからの作業を行う上で、何度も利用することがありますので予め覚えておくのが良いでしょう。
最低限下記のコマンドを理解すれば、これからの作業を行うことは可能です。

  • i で編集モード開始
  • Esc で編集モード終了
  • :wq + Enter で保存して終了
  • :q! + Enter で保存せずに終了
  • /文字列 + Enter で文字列検索

他にも沢山コマンドがあるので詳しく知りたい方は調べてみてください。
(知識のある人は好きなエディターを使えばいいと思います。)

ssh の接続環境

ConoHa のコントロールパネルからコンソールを開いて作業することもできますが、慣れてくると面倒になってきますので、通常は Terminal から ssh を利用して ConoHa に接続します。
通常は問題ないかと思いますが、接続に失敗する場合はルーターやファイヤーウォールが 22番ポート を開放しているか確認してみてください。

Google先生

わからなくても諦めずにググるのが一番大事です(投げやり)。
このドキュメントは可能な限り初心者でも分かるように書いているつもりですが、網羅しきれていない項目があるかもしれません。
CentOS の操作は比較的ドキュメントが多いので、調べれば分かることも多いかと思いますので頑張ってみてください。

サーバーを追加する

まずは ConoHa のアカウント登録をして、コントロールパネルにログインします。
支払設定や電話認証などを終えたら、メニューからサーバー追加を選択します。
今回追加するサーバーは以下の構成を想定しています(全てデフォルトのまま)。

  • プラン
    • タイプ:VPS
    • リージョン:東京
    • メモリ:1GB
  • イメージ
    • イメージタイプ:OS
    • OS:CentOS
    • バージョン:7.x (64bit)
    • rootパスワード:強固なパスワードを指定
  • オプション
    • 自動バックアップ:無効
    • ディスク容量:SSD 50GB
    • 接続許可ポートIPv4:全て許可
    • 接続許可ポートIPv6:全て許可
    • SSH Key:使用しない
    • ネームタグ:任意のサーバー名を指定

追加してしばらくすると新しいサーバーが起動します。
起動したら設定内容を確認し、ネットワーク情報に表示されるIPアドレスをメモしておきましょう。

ConoHa に接続する

Terminal を起動し、早速 ConoHa に接続してみましょう。

// ConoHa に接続する
$ ssh root@[IPアドレス]

Password: と表示されたら サーバー追加時に設定した root パスワードを入力すれば接続完了です。

Tips: Are you sure you want to continue connecting? が表示された場合

yes と入力するだけで大丈夫です。

Tips: WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! が表示された場合

rm ~/.ssh/known_hosts を実行してやり直してみてください。

一般ユーザーを作成する

あなたが普段 ConoHa を操作するためのユーザーを新規作成します。

// ユーザーを追加
$ useradd [好きなユーザー名を指定]
// パスワードを設定
$ passwd [ユーザー名]

Tips: 一般ユーザーを作成する理由

最初にログインした root ユーザーは最強の権限を持っており、ファイルの編集や削除など全ての操作を行うことが可能です。
しかしこのまま使い続けると、誤って Linux を動かすためのシステムファイルを消してしまうなどの事故が起こりかねません。
また最悪のケースとして何らかの理由でサーバーを乗っ取られてしまった場合に root 権限を奪われてしまうと大惨事です。
そのため権限の少ない一般ユーザーを作成して、普段はそちらを利用するのがお約束となっています。

sudo コマンドを実行できるようにする

先程作成した一般ユーザーは少ない権限しか持っていません。
普段はそれで良いのですが、システムファイルを編集したい場合などは、一時的に権限が必要になることが有ります。
必要な時だけ root 権限を利用できる wheel グループにユーザーを追加し、sudo コマンドを実行できるようにします。

// ユーザーを wheel グループに追加する
$ gpasswd -a [ユーザー名] wheel
// wheel グループに属するユーザーが sudo コマンドを利用できるようにする
$ visudo

  // vi が起動するので、以下の行を探して編集する
  ## Allows people in group wheel to run all commands
  # %wheel ALL=(ALL) ALL     // この行の先頭にある # を消す

Tips: wheelグループへの追加について

  • gpasswd ではなく usermod -G wheel [ユーザー名] でも wheel グループへの追加が可能です。
    (ただし処理が若干異なりますので、特に理由がなければ gpasswd を使うのが良いかと思います。)
  • "wheel" とは大物とか実力者という意味らしいです。

Tips: visudo について

  • visudo で # %wheel ALL=(ALL) NOPASSWD: ALL のコメントを解除すれば sudo コマンドの実行時にパスワード入力が不要となります。

su コマンドを制限する

su コマンドを利用するとユーザーを切り替えることが出来ます。
しかし自分以外のユーザーが su コマンドで root ユーザーに切り替えられてしまうのは困ります。
リスクを下げるために wheel グループのユーザー以外から root ユーザーへ切り替えできないように修正します。

// wheel グループ以外から su コマンドを実行できなくする
$ vim /etc/pam.d/su

  #auth required pam_wheel.so use_uid     // この行の先頭にある # を消す

確認する

ここまできたら一通り設定を確認してみましょう。
これらの設定が確認できたら、ひとまずの初期設定は完了です。

// root から作成したユーザーに切り替える
$ su [ユーザー名]
// sudo が使えることを確認する(以下の例ではパスワード入力すると"hello"と表示される)
$ sudo echo hello
// root ユーザーに戻る
$ exit
// ConoHa との接続を終了する
$ exit
// 一般ユーザーとしてログインできることを確認する
$ ssh [ユーザー名]@[IPアドレス]

セキュリティーを強化する

ここまで出来たら、さらにセキュリティーを強化しておきましょう。

Tips: Permit denied が表示される場合

ここからの作業は一般ユーザーとして操作しますので、権限が必要なファイルを編集しようとするとエラーとなります。
その際はコマンドの先頭に sudo をつけることで、一時的に root 権限で命令を実行することが出来ます。

公開鍵と秘密鍵を生成する

いままではパスワードで ConoHa にログインしていましたが、鍵を使ってより強固にしましょう。
まずは ConoHa の鍵を生成します。

// ホームディレクトリに移動
$ cd ~/
// .ssh ディレクトリを作成
$ mkdir .ssh
// .ssh ディレクトリの権限を 700 に変更
$ chmod 700 .ssh
// .ssh ディレクトリに移動
$ cd .ssh
// 鍵を生成
$ ssh-keygen -t rsa -b 2048

  Enter file in which to save the key: [任意の鍵名を入力]
  Enter passphrase: [そのままEnterを押すか、パスワードを入力]
  Enter same passphrase again: [もう一度同じ入力をする]
$ chmod 600 [鍵名].pub

リモートの SSH 設定を変更する

sshd_config を書き換えて、鍵認証でログインできるようにします。
加えてパスワードでのログインや root へのログインも制限します。

$ sudo vim /etc/ssh/sshd_config

  // 以下の行を探して、コメントを解除したり値を書き換えてください。

  // RSA認証を許可する
  RSAAuthentication yes

  // 公開鍵での認証を許可する
  PubkeyAuthentication yes

  // 公開鍵のファイル場所を指定する
  AuthorizedKeysFile .ssh/[鍵名].pub

  // パスワードでのログインを禁止する
  PasswordAuthentication no

  // root へ直接ログインを禁止する
  PermitRootLogin no
// SSH設定を反映する
$ sudo systemctl restart sshd.service

秘密鍵を保存する

先程生成した秘密鍵をローカルに保存します。

// 秘密鍵を表示 (表示されたら全てコピーしてください)
$ cat .ssh/[鍵名]
// ConoHa との接続を終了する
$ exit
// ローカルの .ssh ディレクトリへ移動
$ cd ~/.ssh
$ vim [鍵名]

  // vim が起動したら、先程コピーした秘密鍵をペーストします
  -----BEGIN RSA PRIVATE KEY-----
  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...
  -----END RSA PRIVATE KEY-----
// 鍵のパーミッションを600に変更
$ chmod 600 [鍵名]

ローカルの SSH 設定を変更する

これからはパスワードではなく鍵認証でログインするようになります。
また毎回ユーザー名やIPアドレスを入力するのは面倒ですので、SSHの設定ファイルを作成します。

// ディレクトリ移動
$ cd ~/.ssh
// SSH の設定を追加する
$ vim config

  // 編集して以下の内容を入力する
  Host [任意の接続先名]
    HostName [IPアドレス]
    User [ユーザー名]
    Port 22
    IdentityFile ~/.ssh/[鍵名]

確認する

正しく設定できたか確認してみましょう。

// root でログインできないことを確認する
$ ssh root@[IPアドレス]
// 接続先名だけで接続できることを確認する
$ssh [接続先名]

Tips: WARNING: UNPROTECTED PRIVATE KEY FILE! が表示された場合

秘密鍵のパーミッションを 600 に変更したか確認してみましょう。

Tips: うまくいかない?

まだこの時点では ConoHa の初期設定しかしていませんので、もし上手く動かなくなっても大丈夫です。
もし SSH から接続できなくなった場合は、ConoHa コントロールパネルからコンソールが起動できます。
VPS は何度でもリセットできますし、覚えるためにも最初からやり直してしまっても良いかと思います。
一つずつ操作を再確認し、わからないことがあればGoogle先生で調べてみるのが近道です。

システムを最新にする

最後は yum コマンドで CentOS を最新の状態にアップデートします。

// システムを最新にする
$ sudo yum -y update

Tips: yum コマンドについて

yum を利用すると機能を追加したり更新したりすることができます。
ここでは割愛しますが、例として以下を実行すると開発ツール群を追加することができます。

// 開発ツール群をインストールする
$ yum -y groupinstall base "Development tools"

まとめ

お疲れ様でした!設定は問題なく出来たでしょうか?
他にもポート番号を変更したり、ファイアウォールの設定をしたりなど、用途に合わせて適宜設定するのが良いでしょう。
拙い文章で恐縮ですが、もし何らかのお役に立てたならば幸いです。
ここまでお読み頂き有難うございました!

おさらい (いそがしい人向け)

ここまでの一連の流れをまとめました。
以下の設定を想定して記述しています。
確認などは省略していますので適宜宜しくお願いします。

  • IPアドレス:999.999.999.999
  • ユーザー名:conoha
  • 秘密鍵名:conoha_key
  • 公開鍵名:conoha_key.pub
  • ローカルSSH接続先名:conoha_vps
$ ssh root@999.999.999.999

----------

$ useradd conoha

$ passwd conoha
    New password: **********
    Retype new password: **********

$ gpasswd -a conoha wheel

$ visudo

    # %wheel ALL=(ALL) ALL // コメント解除

$ vim /etc/pam.d/su

    # auth required pam_wheel.so use_uid // コメント解除

$ su conoha

$ cd ~/

$ mkdir .ssh

$ chmod 700 .ssh

$ cd .ssh

$ ssh-keygen -t rsa -b 2048

    Enter file in which to save the key: conoha_key
    Enter passphrase: **********
    Enter same passphrase again: **********

$ chmod 600 conoha_key.pub

$ sudo vim /etc/ssh/sshd_config

    RSAAuthentication yes
    PubkeyAuthentication yes
    AuthorizedKeysFile .ssh/conoha_key.pub
    PasswordAuthentication no
    PermitRootLogin no

$ sudo systemctl restart sshd.service

$ cat conoha_key // 秘密鍵をコピー

$ exit

$ exit

----------

$ cd ~/.ssh

$ vim conoha_key // 秘密鍵をペースト

$ chmod 600 conoha_key

$ vim config
  Host conoha_vps
    HostName 999.999.999.999
    User conoha
    Port 22
    IdentityFile ~/.ssh/conoha_key

$ ssh conoha_vps

$ sudo yum -y update

あとがき

このはちゃんグッズほしいなぁ〜(チラッチラッ

追記:↑って書いたら、このはちゃんから怒られました( ^ω^)
https://twitter.com/MikumoConoHa/status/741082916713701376

58
81
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
58
81

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?