ConoHa で VPS をレンタルしたので、メモがてら環境構築の手順について書いていきます。
基本的には VPSスタートアップガイド の手順で行っていきます。
- ConoHa VPS 1GBプラン
- OS : Ubuntu
参考にさせて頂いたのは下記のページです。
接続許可ポートを設定
SSH | 公開鍵認証を設定する
SSH とは安全にサーバーに接続するための仕組みです。
クライアント(自分側)とサーバー側で一組の鍵(ファイルです)を保管し、アクセスるたびに鍵を照らし合わせ、合っていれば暗号化された通信が可能になります。
![](https://cgpipeliner.info/wp-content/uploads/2022/03/2022-03-29_06h09_27.png)
もう少し詳しい解説は下記を参考にしてください。
鍵の生成
これでキーが生成されるのでダウンロードします。
サーバーに鍵を設定する
上記で行ったのは鍵の生成とダウンロードのみです。
その鍵がどのサーバーの鍵なのかは指定していません。
ConoHa では複数のサーバーを持つことができますが、SSH キーはサーバーごとに設定する必要があります。
サーバーの再構築
公式ページでは
SSH Keyで設定した鍵は新規サーバーの追加時に登録済みのキーとして設定することができ、新規サーバー追加時のSSH Keyの設定を簡略化できます。
とありますが、新規でサーバーを作成した場合はすでにサーバーが構築されています。
- シャットダウン
- サーバー再構築
の手順を踏むことで同様に SSH Key の設定を簡略化できます。
![](https://cgpipeliner.info/wp-content/uploads/2022/03/2022-03-28_19h43_44.png)
![](https://cgpipeliner.info/wp-content/uploads/2022/03/2022-03-28_19h41_18.png)
鍵の設定
![](https://cgpipeliner.info/wp-content/uploads/2022/03/2022-03-28_19h42_15-1024x527.png)
このタイミングで自動的に root パスワードを利用したアクセスができなくなります。
スーパーユーザの SSH ログイン
次にログイン設定を行います。
Tera Term のインストール
ここでは公式ページの通り、Tera Term Home Page でアクセスします。下記のページよりダウンロードできます。
スーパーユーザの SSH ログイン
![](https://cgpipeliner.info/wp-content/uploads/2022/03/2022-03-28_18h53_47-1.png)
![](https://cgpipeliner.info/wp-content/uploads/2022/03/2022-03-29_07h04_23.png)
下記の秘密鍵の欄には 先ほどダウンロードした root アカウント用の pem ファイル を指定します。
![](https://cgpipeliner.info/wp-content/uploads/2022/03/2022-03-28_20h12_43-1.png)
OK を押すと VPS に SSH キーでログインできます。
![](https://cgpipeliner.info/wp-content/uploads/2022/03/2022-03-29_06h59_53.png)
ログインした先は既に Ubunts の環境です。
各種 Linux コマンドが利用できます。
アップデート
ログインしたらアップデートをしておきます。
sudo apt update sudo apt upgrade
今後アプリケーションや python ライブラリをインストールする際にエラーが発生した場合は上記のアップデートを行うことで解消される場合があります。
一般ユーザを追加する
サーバーを構築した最初は スーパーユーザである「root」アカウントしか存在しません。このアカウントはすべての権限を持っているため、事故が起こりやすいリスクがあります。
そのため、スーパーユーザではなく一般ユーザを作成し、その一般ユーザで普段の作業を行います。
スーパーユーザの権限で一般ユーザを作成します。一般ユーザの作成は下記の adduser
で行った方がスムーズです。
adduser でのユーザ追加
adduser ユーザ名
![](https://cgpipeliner.info/wp-content/uploads/2022/03/2022-03-29_07h15_30.png)
このコードであればパスワードも流れで設定してくれます。
![](https://cgpipeliner.info/wp-content/uploads/2022/03/2022-03-29_07h16_10.png)
パスワードを打っても画面に表示されませんが仕様です。そのままエンターを押せば次に進みます。
- Full Name
- Room Number
- Work Phone
- Home Phone
- Other
に関しては空欄で構いません 。何も記入せずエンターを押します。
![](https://cgpipeliner.info/wp-content/uploads/2022/03/2022-03-29_07h18_06.png)
最後に作っていいか確認されます。
y
→ エンター
を押すことで一般ユーザーが作成されます。
adduser と useradd の違い
この二つのコマンドはどちらもユーザを作成するコマンドですが、挙動が違います。
useraddはコマンド一発で作るタイプで、adduserは対話形式で作る違いがあります。
adduser | useradd |
---|---|
対話型 → Linux がパスワードなどを聞いてくれる | コマンド型 → こちらから個別に指定する |
home ディレクトリを自動生成 | home ディレクトリを自動で作らない |
自分一人ならこちら | 複数のユーザー登録を行う時に便利 |
一番下は個人的な感想です。個人的な利用であれば使用頻度はかなり少ないはずなので、楽な adduser でいいかと思います。
ユーザ関連の Linux コマンド
注意したいのはユーザーの削除です。adduser
で作成したユーザーは自動でホームディレクトリが作成されます。
ユーザーを削除する際は userdel -r ユーザー名
でホームディレクトリごと削除してください。
ユーザ一覧 | cat /etc/passwd |
ユーザの削除 | userdel ユーザ名 |
ユーザディレクトリの存在確認 | ls -d /home/ユーザ名 |
ユーザディレクトリごとユーザを削除 | userdel -r ユーザ名 |
Tera Term に文字をペーストする際、Ctrl + V ではできません。右クリックがペーストになっています。
一般ユーザの設定を変更する
作成したユーザーの設定を変えていきます。
一般ユーザが sudo を使えるようにする
一般ユーザーは sudo コマンドを使うことでスーパーユーザの権限でコマンドを実行できるようになります。
sudoはコマンド単位で一時的にroot権限を使う方法だ。「スーパーユーザでDoするからsudo」という意味合いで覚えておこう。
sudo | エンジニアの入り口
スーパーユーザと一般ユーザ
スーパーユーザの権限だとリスクがあるので一般ユーザを作成しました。
ですが、sudo コマンドを使うとスーパーユーザの権限でコマンドを利用できるようになり、この sudo コマンドでサーバーを管理しようとしています。
これなら最初からスーパーユーザで作業を行えばいいのではないか
という疑問が湧いてきたんですが、それは絶対にやってはいけないことのようです。
rootユーザはLinuxOSにおいて「唯一神」である。rootユーザであれば自分自身を削除するコマンドも受け付けてしまうし、他人のユーザアカウントを削除することも可能となっている。よってシステムの設定ファイルなどを変更するとき以外使用しないようにするのが一般的である。
間違ってもrootユーザで全てを操作し仕事を片付けようとしてはいけないので注意しよう。Linuxの場合インストールをおこなった管理者自身も一般ユーザを別に作成し、必要な時だけrootの権限を借りて操作するのが習慣となっている。それぐらいrootというユーザは慎重に扱う必要があるというのを念頭に置いておこう。
【初心者でもわかる!】Linuxのユーザとは? | エンジニアの入り口
UNIX における管理権限は絶対的なもののようで、徹底すべき事柄のようです。
同じ疑問を持つ方はやはりいらっしゃいました。
一人で開発する分には他の人に破壊される心配はありませんが、自分がミスする可能性はあるので一般ユーザで作業した方が無難そうです。
ことセキュリティにおいて、先人たちの仰ることは絶対なのです。
sudo を使えるグループにユーザーを入れる
ユーザーを該当するグループに入れることで一般ユーザに sudo 権限を与えることができます。
上記のページでは OS が CentOS です。
Ubuntu の場合、所属させるグループが sudoグループになります。
gpasswd -a ユーザー名 sudo
グループに関する Linux コマンド
グループの一覧を表示 | cut -d: -f1 /etc/group |
ユーザの所属するグループを表示 | groups ユーザ名 |
sudo グループの中身を表示 | getent group グループ名 |
一般ユーザで SSH ログイン
作成した一般ユーザでサーバーに SSH ログインします。
スーパーユーザの SSHキーはサーバーで作りましたが、一般ユーザの場合はクライアントで SSH キーを作成します。
![](https://cgpipeliner.info/wp-content/uploads/2022/03/2022-03-29_18h56_56.png)
Tera Term に SSH キーを作る機能があるのでこれを利用します。
クライアント側で持っているキーを秘密鍵、サーバーにアップする鍵を公開鍵と呼びます。
SSH キーの生成
![](https://cgpipeliner.info/wp-content/uploads/2022/03/2022-03-29_12h53_14.png)
![](https://cgpipeliner.info/wp-content/uploads/2022/03/2022-03-29_10h56_19.png)
![](https://cgpipeliner.info/wp-content/uploads/2022/03/2022-03-29_10h57_01.png)
![](https://cgpipeliner.info/wp-content/uploads/2022/03/2022-03-29_11h23_59.png)
ConoHa のガイドではbcrypt KDF 形式のチェックが外れていますが、入れたまま生成・保存したほうがいいそうです。
一般ユーザでパスワードログイン
SSH ログインを行うためには一般ユーザの公開鍵をサーバーにアップする必要があります。
そのためには一般ユーザでパスワードでログインしなければなりません。
- パスワードでログイン
- 秘密鍵をアップ
- SSH キーでログイン可能になる
という流れになります。
ですが、現状ではパスワードによるログインができない設定になっています。
まずは sshd_config の設定を変更して一般ユーザがパスワードでログインできるように設定します。
スーパーユーザでサーバーにログインして下記のコマンドを実行します。
vi /etc/ssh/sshd_config
これで vi エディタで sshd_config を編集できるようになります。
vi エディタ とは
vi エディタは UNIX系OSに付属しているテキストエディタです。
windows におけるメモ帳のような位置づけかと思います。
編集モード | i |
コマンドモード | esc キー |
保存して終了 | コマンドモードで :wq |
保存せずに終了 | コマンドモードで :q! |
上記4つができればなんとかなるはずです。
sshd_config とは
vi エディタで sshd を設定していきますが、その前に sshd について書いておきます。
SSHによる接続を待ち受けるのがお仕事のデーモンさん
sshd | IT用語辞典
が「sshd(エスエスエィチディー)」です。
SSH を受け取る機能が sshd で、その内容が書かれているのが sshd_config です。
sshd_config の編集
変更するのは一行だけです。
PasswordAuthentication no
をPasswordAuthentication yes
へ変更します。
PasswordAuthentication yes
i キーで編集モードに入って編集し、esc キーでコマンドモード、:wq
で保存して終了します。
設定の反映
sshd_config は内容を編集するだけでは設定が適応されません。
systemctl reload sshd
を入力することで sshd に反映されます。
一般ユーザでパスワードログイン
![](https://cgpipeliner.info/wp-content/uploads/2022/03/2022-03-29_10h55_39.png)
![](https://cgpipeliner.info/wp-content/uploads/2022/03/2022-03-29_12h54_01.png)
公開鍵のアップロード
これでようやく公開鍵をアップできます。
ダウンロードした pubファイル が公開鍵です。これを Tera Term へ ドラッグ & ドロップします。
![](https://cgpipeliner.info/wp-content/uploads/2022/03/2022-03-29_13h24_54.png)
![](https://cgpipeliner.info/wp-content/uploads/2022/03/2022-03-29_13h29_01.png)
そのまま何も変更せずに OK をクリックします。
ダイアログにもありますが、公開鍵である「id_rsa.pub」はホームディレクトリの直下にアップロードされます。
pwd
とls
でホームディレクトリに id_rsa.pub がアップされていることがわかります。
![](https://cgpipeliner.info/wp-content/uploads/2022/03/2022-03-29_13h39_59.png)
公開鍵を設定する
サーバーにアップしただけでは効果がありません。
フォルダを作って格納し、設定を行っていきます。
.ssh ディレクトリの作成
mkdir .ssh
パーミッションの設定
chmod 700 .ssh
パーミッションとは
Linuxを始めとしたUnixLikeSystemではファイルやディレクトリ一個一個に許可属性を与え、管理出来るようになっている。これを「パーミッション」という。
それぞれ「所有者」「グループ」「その他のユーザ」にパラメータを割り振りが可能となっている。
【一通り理解】Linuxパーミッションの基本とその設定方法
r | 読み込み可能 |
w | 書き込み可能 |
x | 実行可能 |
- | 不可 |
0 | --- | 何もできない |
1 | --x | 実行可能 |
2 | -w- | 書き込み可能 |
3 | -wx | 実行可能・書き込み可能 |
4 | r-- | 読み込み可能 |
5 | r-x | 読み込み可能・実行可能 |
6 | rw- | 読み込み可能・書き込み可能 |
7 | rwx | 読み込み可能・書き込み可能・実行可能 |
一桁目がユーザー、二桁目がグループ、三桁目がその他のユーザーを表します。
そのため、先ほどの chmod 700
は
- 現在ログイン中のユーザーは 読み込み可能・書き込み可能・実行可能
- 同じグループのユーザーは 読み込み・書き込み・実行のいずれもできない
- それ以外のユーザーは 読み込み・書き込み・実行のいずれもできない
という設定になります。
パーミッションの確認
パーミッションの確認は ll コマンドで確認できます。
ll .ssh
公開鍵の移動と名前変更
mv コマンドでファイルの移動と名前変更ができます。
使い方は python の shutil.move()
と同じです。
第一引数に対象のファイル、第二引数で移動先のディレクトリや名前を指定します。
mv id_rsa.pub .ssh/authorized_keys
ここは ConoHa のガイド通り「.pub」 の拡張子を消しています。
公開鍵のパーミッション設定
chmod 600 .ssh/authorized_keys
現在ログイン中のユーザーのみ読み込み/書き込み可能にします。
ConoHa のガイドではユーザーディレクトリ直下にある id_rsa.pub ファイルを削除することになっていますが、移動させたので存在しません。
rm -f id_rsa.pub
上記のコードは ls コマンドでファイルが残っていなければ実行不要です。
一般ユーザで SSH ログイン
やっと、やっと SSH でログインできる環境が整いました。
![](https://cgpipeliner.info/wp-content/uploads/2022/03/2022-03-29_17h15_30.png)
パスフレーズは SSHキーを生成した時のパスフレーズを入力します。
各種ログインの禁止設定
一般ユーザで SSH ログインができるようになりましたが、
現状ではまだパスワードでのログインが可能になっています。
これでは SSH ログインを設定した意味がないので、パスワードでのログインができないようにします。
また、併せて誤って root でログインしないように root でのログインも禁止します。
両方とも ssh_config で設定します。
root アカウントでログインしなおした状態で 再度 ssh_config を vi エディタで開きます。
vi /etc/ssh/sshd_config
root ログインの禁止設定
PermitRootLogin yes
をPermitRootLogin no
へ変更します。
PermitRootLogin no
パスワードログインの禁止設定
PasswordAuthentication yes
をPasswordAuthentication no
へ変更します。
PasswordAuthentication yes
保存して終了するにはコマンドモードで :wq
を入力します。
sshd 設定の反映
忘れずに下記のコマンドを実行します。
systemctl reload sshd
これでパスワードでのログインも、root アカウントでのログインもできなくなりました。
しかし、Ubuntu の初手のアカウント設定だけでかなりかかりますね・・・。ナメてた。
root でログインするにはどうすればいいか
もう root でログインできなくなりました。今後スーパーユーザの権限が必要になったときはどうすればいいのでしょうか。
sudo 権限の一般ユーザで sshd_config を編集する
sudo を扱える権限をもつ一般ユーザであれば sshd_config を変更できます。
sudo vi /etc/ssh/sshd_config
sshd_config が開くので、
PermitRootLogin no
をPermitRootLogin yes
へ変更します。これで設定を反映した後であれば root アカウントでログインできます。
sudo 権限の一般ユーザがいない場合
sudo 権限の付与を怠った場合、ConoHa のコンソールからログインできます。
ConoHa のコンソールでログインした場合は強制的に root でログインできるため、sshd_config の編集が可能です。
Ubuntu環境の基本設定
ここからは基本的な設定項目です。
日本語化
日本語パッケージのインストール
sudo apt-get -y install language-pack-ja-base language-pack-ja
日本語化
sudo update-locale LANG=ja_JP.UTF-8 LANGUAGE="ja_JP:ja"
その後、ログインしなおすか下記のコードを実行します。
source /etc/default/locale
これでサーバーで日本語を扱えるようになります。
タイムゾーンの設定
タイムゾーンを日本時間に設定します。
sudo cp /etc/localtime /etc/localtime.org sudo ln -sf /usr/share/zoneinfo/Japan /etc/localtime
私の場合は既に日本時間になっていました。サーバーや Ubuntu のバージョンによってはデフォルトで日本時間が設定されているようです。