VPSを新規で構築
rootパスワードを設定し、SSH Keyを新規登録、もしくは登録済のキーを選択します。
ここでSSH Keyの設定を行うことで初回のrootログインでいきなり公開鍵を使えます。
RootでSSH接続
コマンドプロンプトやTera Termなどで接続します。この記事ではコマンドプロンプトを使用します。
IPアドレスはConoha VPSの管理画面で表示されているアドレスをコピぺします。
-iオプションで公開鍵のパスを指定して接続できます。エクスプローラーからファイルをドラッグ&ドロップでパスが記入されます。
ssh root@<ipアドレス> -i "<公開鍵のパス>"
途中以下のような質問が表示される場合、「yes」と書いてエンターします。
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
新規ユーザーを作成&sudo追加
普段のサーバーでの作業に使用するユーザーを作成します。rootログインはセキュリティー向上のために使いません。
以下の流れで進めます。
> adduser <ユーザー名>
Adding user `<ユーザー名>' ...
Adding new group `<ユーザー名>' (1001) ...
Adding new user `<ユーザー名>' (1001) with group `<ユーザー名>' ...
Creating home directory `/home/<ユーザー名>' ...
Copying files from `/etc/skel' ...
New password: //パスワードを入力
Retype new password: //パスワードの確認
passwd: password updated successfully
Changing the user information for <ユーザー名>
Enter the new value, or press ENTER for the default
Full Name []: //以下5項目入力する必要なし
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] y //yを選択
作ったユーザーにsudo権限を付与します。
gpasswd -a <ユーザー名> sudo
ssh設定の変更(一時的)
作業用なので後でもとに戻します。ssh接続時にパスワードログインが拒否されているので、それを許可します。
> nano /etc/ssh/sshd_config
PasswordAuthentication yes //この部分をnoからyesに
設定の変更を反映させます。
systemctl reload sshd
ユーザーでSSH接続(or sftp接続)
ユーザーログイン用に作成した公開鍵をサーバーに転送します。SSH接続したままドラッグ&ドロップでファイル転送できるTera Termをお勧めします。
エクスプローラーから公開鍵をTera Termのウィンドウ上にドラッグ&ドロップします。SCPで転送するか聞かれるのでそのままOKします。
ファイルがあるか確認します。
> ls
<名前>.pub
(備考)Tera Termを使わずプロンプト等で作業する場合は以下の通りです。
sftp <ユーザー名>@<IPアドレス>
<ユーザー名>@<IPアドレス>'s password: //パスワードを入力
公開鍵の設置
ファイル転送だけで終わりではなく、適切に設定必要があります。ユーザーでログインして以下の作業をします。場所はホームディレクトリです。
mkdir .ssh
chmod 700 .ssh
mv id_rsa.pub .ssh/authorized_keys
chmod 600 .ssh/authorized_keys
rm -f id_rsa.pub
RootでSSH接続設定の変更
Rootで接続して設定を再度変更します。
> nano /etc/ssh/sshd_config
Port <番号> //コメントアウトを外して任意のものに変更
PermitRootLogin no //yesからnoに
PubkeyAuthentication yes //コメントアウトを外す
PasswordAuthentication no //noに戻す
> systemctl reload sshd //適用
Portを変更したので次はUbuntuのwafで指定のポートの許可をします。
> ufw allow <設定したポート番号>/tcp
Rule added
Rule added (v6)
> ufw reload //設定の再読み込み
次に22番ポートをふさぎます。IPv4とIPv6の両方ふさぐので、2回似たようなことをやります。
> sudo ufw status numbered
[ 1] 80 ALLOW IN Anywhere
[ 2] 22 ALLOW IN Anywhere
[ 3] <設定したポート番号>/tcp ALLOW IN Anywhere
[ 4] 80 (v6) ALLOW IN Anywhere (v6)
[ 5] 22 (v6) ALLOW IN Anywhere (v6)
[ 6] <設定したポート番号>/tcp (v6) ALLOW IN Anywhere (v6)
> sudo ufw delete 2 //IPv4
Deleting:
allow 22
Proceed with operation (y|n)? y //yを押す
Rule deleted
> sudo ufw delete 4 //IPv6
Deleting:
allow 22
Proceed with operation (y|n)? y //yを押す
Rule deleted (v6)
最後にssh設定を適用します。
systemctl reload sshd
これ以降新規でrootのSSH接続を使用としてもブロックされるようになります。ユーザーで指定したポートに秘密鍵を指定して接続することになります。
完了したらVPSを再起動します。
ユーザーで公開鍵認証によるログイン
SSH接続します。
ssh <ユーザー名>@<ipアドレス> -p <ポート番号> -i "<ファイルのパス>"
Enter passphrase for key '<ファイルのパス>': <鍵作成時のパスワード>
ログインできれば成功です。