2018年11月27日こんにちは、日本は寒くなってきましたね。今週末から移動してベトナムへ住居を移す予定です。日本の冬からベトナムは寒暖差が激しいのですが、すでに半袖以外のインナーがないので究極に寒くてブログも更新できなかったという......。今日は久しぶりに新しくサーバを立てたので、構築をした際の諸々を書き記しておきます。Cuttlefishがリリースされていたのでそれをサーバとして使ってみることにしました。Cuttlefishは直訳すると「宇宙イカ」ですかね。VPSやクラウドサーバのインスタンスでサーバ構築するよ!という人にもわかりやすく説明していきます。用途による使い分け一番最初の基本的な設定まず最初にパッケージ関連のアップデートや、サーバ上で必要となるパッケージのインストール、さらにユーザーやSSHログイン周りについて説明していきます。今回はクライアント(つまり手元の操作するパソコン)にMacOS、ホスト(アプリケーションの展開先)にVultrのVPSサーバ(メモリ2GB、月$10)を利用しています。パスワードでSSHログインVultrでもなんでも同じですが、最初はrootユーザーを使ってパスワードでSSHログインします。手元のパソコンで以下のコマンドを打つとパスワード入力画面になります。updates.パスワード入力はコピペでやりましょう。基本的にターミナルのパスワード入力画面は「本当に打てているのか?」と疑問になるような空間になっています。あるのでパッケージで更新できるものがないのはわかるのですが、バージョンの違いやしばらく時間が経つとパッケージの更新が必要な場合もあります。念の為、パッケージの更新をしておきましょう。upgradeこうしておくことで、ソフトウェアの更新状況がバーっと表示されていきます。必要なソフトウェアのインストールここはある程度好みの問題もありますが、私の場合はEmacsは必須なのでインストールしていきます。後々ソフトウェアのビルドで必要になるgccもインストールします。gccemacsはテキストエディタです。Collectionの略で、ソフトウェアのコンパイル時に利用します。明示的にgccコマンドを使うことはほとんどありませんが、ソースコードからビルドしたソフトウェアのコンパイル時に利用することが多いです。ユーザーの追加とsudo権限の付与これは最初にやってもいいのですが、ユーザーの作成を行います。通常、最初はrootユーザーでログインした状態になっていると思いますが、rootでSSHログインできる状態にしておくことは危険です。後々、sshdというSSHに関する設定で行いますが、ログインユーザーは別に作っておきましょう。つくることをオススメします。ここでパスワードの入力を求められるのでほどよく設定しておきましょう。パスワード自動生成ツール作成されると以下のように情報を質問されるのですが、全部空のままEnterを押してしまって大丈夫です。[Y/n]次にsudoグループに作成したユーザーを追加します。sudoここまで行いユーザーが追加されたことを確認しましょう。次にサーバの初期設定で最も大事とも言えるログイン周りです。最初はパスワード認証でrootログインしましたが、辞書攻撃と呼ばれるよく使われるパスワード群によるログイン試行される場合があります。それを防ぐために手元のクライアントで作った鍵ペアを利用した暗号化が必要です。いうファイルが生成されます。パスワードを空で設定しているということになりますが、ここは任意です。sshでログインするときにさくっとつなぎたいという場合には空のままでも良いのですが、仮に自分の秘密鍵が流出したり手元のパソコンが勝手に使われた場合にはリスクが生じますので自己責任でお願いします。徐々に浸透しつつあります。いうさらに強力なアルゴリズムを利用できるので、そちらを使うことをオススメします。次に作成した鍵ペア(公開鍵と秘密鍵のペアのこと)のうち、公開鍵のほうをサーバ上に置きましょう。ついているほうが公開鍵です。間違っても秘密鍵をアップロードしないようにしてください。準備として、サーバ上で公開鍵の置き場所を作ります。.ssh700という作成ユーザーにはすべての権限が付与されるが、それ以外には不許可というパーミッションのディレクトリを作成するのが上記です。次にホスト側に公開鍵をアップロードします。protected]アドレス:/home/USERNAME/.ssh/authorized_keysさらにアップロードしたファイルの権限を600にしてファイルの所有者以外の読み書きを禁じます。そこまでやったら下準備はOKです。SSHの設定ファイルを編集しましょう。/etc/ssh/sshd_config編集できる項目はたくさんありますが、ここでは最低限設定しておいたほうが良いものだけ設定を入れます。noPortは接続するポート番号を示しますPermitRootLoginはrootユーザーでログインを許可するかを示しますMaxAuthTriesは認証失敗を何度許可するかを示しますMaxSessionsはSSHでの同時接続許可数を示しますPubkeyAuthenticationは公開鍵による認証の有無を示しますPasswordAuthenticationはパスワード認証を許可するかを示しますPermitEmptyPasswordsは空のパスワード認証を許可するかを示します最低限この程度設定しておけばOKです。他にもKerberosを利用した認証方法などもあります。次にクライアントからSSHで接続する際により簡略化できる方法を紹介します。通常であれば以下のようにSSHコマンドでログインします。打つだけでログインできるようになります。日本標準時である世界標準時+9:00も最初にやっておいたほうがいいです。国外向けの場合は問題ありませんが、データベースやログの時間がずれているとわかりづらくなってしまいます。2018さらにエディタもデフォルトでviが選択されるようになっているので、もし変更したい場合は以下のコマンドで変更してみましょう。mode※上記例ではEmacsを選んでいます。用途による使い分けここまではサーバを構築する際にだいたいすべてのサーバで行います。クラウドサーバプラットフォームを利用している場合は、認証方法がオリジナルで用意されている場合も多々ありますが、基本的な認証に関する方式は同じです。あとはWebサイトを公開するのか、それともシステムトレードで活用するのか、単なる遊び場としてゴリゴリ使うのかによってさまざまな使い方ができます。それによってソフトウェアのインストールやさらなる設定の違いなどがあるので、おいおい種類別に紹介していきたいと思います。Co.,Ltd開発部の合同公式ブログ。代表がITエンジニア出身のデジタルノマド→日本とベトナム・ホーチミンでIT企業設立。海外デジタルノマドやエンジニアのリモートワーク、プログラミング、オフショア開発やミニラボ情報などをまとめていきます。Co.,Ltd開発部の合同公式ブログ。代表がITエンジニア出身のデジタルノマド→日本とベトナム・ホーチミンでIT企業設立。海外デジタルノマドやエンジニアのリモートワーク、プログラミング、オフショア開発やミニラボ情報などをまとめていきます。