Hexo ブログ公開まで(3/3) ~ConoHa VPSを契約、設定、ファイル転送~

Hexo ブログ公開まで(3/3) ~ConoHa VPSを契約、設定、ファイル転送~

Hexoブログを公開する

前回作成したローカル環境のHexoブログを外部に公開する。

前回↓

ConoHa VPSを契約し、セキュリティを強化し、publicファイルを転送し、外部からアクセスする。

1. Conoha VPSを契約

ConoHa VPSから「お申し込み」する。



会員ページからサーバー追加。



「リージョン」は「東京」、
「メモリ」は「1GB」。



ここでイメージタイプのタブを「OS」から「アプリケーション」へ、
「アプリケーション」は、やりたい内容に合わせたソフトが適切なバージョンの組み合わせでインストールされているので楽かつ安全。
今回は「LEMP(PHP)」



「rootパスワード」と「ネームタグ」を適当に作成。



オプションの「SSH Key」で「キーを新規作成」。
適当な名前で「自動作成」、「追加」すると鍵が作られる。



「ダウンロード」を押すと。「〇〇.pem」という名前のプライベートキー(秘密鍵)が手に入る。
名前が長いので「key.pem」とする。



さっき作ったパブリックキー(公開鍵)が自動で選択される。



「スタートアップスクリプト」の「テンプレート」を選び、「Fail2banインストール」を選択。
これにより、同一IPからの連続ログイン失敗を検知するとそのIPからのアクセスを禁止してくれる。つまり総当たり攻撃を防ぐことができる。



こんなかんじになった。



「追加」するとサーバーを作ってくれる。



サーバーリストから今作ったサーバ-を選択すると「コントロールパネル」が開く。



括弧の中が今作ったサーバーのIPアドレス、これだと118.27.14.98
また、下のパネルからサーバーが操作できる。右端の「サーバー削除」が一番よく使うやつ、訳が分からなくなったら全部消すことができる。



2. セキュリティを強化

sshを使ってさっき作ったサーバに入る。
その後セキュリティ設定。
最近のWindowsは最初からsshが使えてえらい。

2.1. サーバに入る

ipアドレスが118.27.14.98なので、
ターミナルから

1
ssh root@118.27.14.98

と打ってみる。

入れない。

1
root@118.27.14.98: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

と言われる。
オプションでSSH Keyを選択したので秘密鍵がなければ入れないようになっている。

cdコマンドでさっきダウンロードした秘密鍵(key.pem)のとこにいくか秘密鍵の方を持ってくるかして、

1
ssh root@118.27.14.98 -i key.pem

と秘密鍵を指定すると入れる。
-iはidentity fileを指定しますという意味。

うまくいくと

1
2
3
4
5
6
7
8
9
10
11
12
================================================
Welcome LEMP application!

DocumentRoot: /usr/local/openresty/nginx/html
URL: http://118.27.14.98/
phpinfo: http://118.27.14.98/phpinfo.php
MySQL root password: 5Xueyre5D

Enjoy!

To delete this message: rm -f /etc/motd
================================================

と言われる。
Enjoy!

2.2. 別のユーザを作る

セキュリティ上、rootユーザがsshログインできると良くない。今はrootユーザ以外存在しないため、

  1. 新たなユーザを作り、
  2. 新たなユーザが鍵認証ログインできるようにし、
  3. rootユーザのログインを禁止し、以降は新たなユーザでログインする。

2.2.1. 新たなユーザを作る

1
2
3
adduser username # usernameという名前のユーザを新規作成
passwd username # usernameにパスワードを設定
gpasswd -a username wheel # usernameをwheelというグループ(超強い)に所属させる

パスワードをpasswordにしたらBAD PASSWORDと言われた。

2.2.2. 新たなユーザが鍵認証ログインできるようにする

1
2
3
4
5
6
7
cd /home/username
mkdir .ssh
chmod 700 .ssh
chown username .ssh
cd .ssh
cp ~/.ssh/authorized_keys authorized_keys
chown username authorized_keys

別のターミナルから

1
ssh username@118.27.14.98 -i key.pem

と打って入れたらOK

2.2.3. root ログイン禁止

sshd_configはsshの設定ファイル。これをviというエディタで編集する。

1
vi /etc/ssh/sshd_config

と打つとviが起動してファイルの中身が表示される。
viで使うコマンドは今後の人生で4つだけ。
i(文字が編集できるモードになる),Esc(右2つのコマンドが打てるモードになる),:wq(保存して終了),:q!(保存せず終了) 。

sshd_configの中で変えるのは一か所だけ

1
PermitRootLogin yes

1
PermitRootLogin no

にします。

service sshd restartと打つとsshd_configの内容変更が反映される。

別のターミナルから

1
ssh root@118.27.14.98 -i key.pem

と打って入れなければOK。

2.3. SSHポート番号変更

SSHのポート番号はデフォルトでは22、みんな知ってるので適当な番号に変える。
同様に

1
vi /etc/ssh/sshd_config

で設定ファイルを開き、

1
#Port 22

をとりあえず

1
Port 50000

にする(49152~65535の中から選択)。
service sshd restartと打って変更を反映。

続いて

1
vi /usr/lib/firewalld/services/ssh.xml

と打ってファイアウォールの設定ファイルを編集。

1
<port protocol="tcp" port="22"/>

1
<port protocol="tcp" port="50000"/>

にします(さっきと同じ番号)。

firewall-cmd --reloadと打ってファイアウォールの設定変更を反映。

別のターミナルから

1
ssh username@118.27.14.98 -i key.pem

と打つとポート番号が違うためConnection timed outとなる。

1
ssh username@118.27.14.98 -i key.pem -p 50000

と打って入れたらOK。
-pはポート番号を指定しますという意味。

3. publicフォルダを転送し、外部からアクセスする

前回作ったpublicフォルダをサーバに送る。

3.1. scpでpublicフォルダを転送

scpというコマンドを使うとsshを使いながらファイルを転送できる。
ローカルPC側でpublicフォルダのとこにいくかpublicフォルダの方を持ってくるかして、

1
scp -P 50000 -r -i key.pem public username@118.27.14.98:/usr/local/openresty/nginx/

とすると失敗する。

1
scp: /usr/local/openresty/nginx//public: Permission denied

権限がないらしい。
publicを置こうとしている/usr/local/openresty/nginx/rootのものなので、scpを実行しているusernameには権限がない。
rootscpを使えば良かったがrootでのログインはさっき禁止した。順番間違えた。

なのでサーバー側で/usr/local/openresty/nginx/の所有権をusernameに移す。

1
chown username /usr/local/openresty/nginx/

もう一度scp

1
scp -P 50000 -r -i key.pem public username@118.27.14.98:/usr/local/openresty/nginx/

-Pはポート番号を指定しますという意味。-pではない。
-rはフォルダごと送りますという意味。これがないとファイルしか送れない。

3.2. ブログをサーバ上で公開

1
vi /usr/local/openresty//nginx/conf/nginx.conf

と打ってnginxの設定ファイルを編集。

1
2
3
4
location / {
root html;
index index.php index.html index.htm;
}

1
2
3
4
location / {
root public;
index index.php index.html index.htm;
}

にする。

/usr/local/openresty/nginx/sbin/nginx -s reloadと打ってnginxの設定変更を反映。

ブラウザから118.27.14.98を確認。



見れた。



スマホからも見れた。

参考

Opensouce & Setup
CentOS 8 で ssh ポートを変更
https://mxnl.com/centos-ssh-port/

IT専科
UNIX/Linuxコマンド ABC順
http://www.itsenka.com/contents/development/unix-linux/index-abc.html

タグ , ,

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×