【ConohaVPS】SSHを公開鍵認証で接続&作業用ユーザーを追加する方法

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 '<ファイルのパス>': <鍵作成時のパスワード>

ログインできれば成功です。

タイトルとURLをコピーしました