Conoha VPS公式のスタートアップガイドに背き、勉強もかねてTeraTermなどを使わずにどうにか
一般ユーザー追加⇒鍵作成⇒SSH接続(公開鍵認証) までできるようにしてみました。
※初学者向けです。
環境
公開鍵作成元
- Windows11
- コマンドプロンプト
公開鍵送付先
- Conoha VPS
- Ubuntu22.04(64bit)
前提
-
root権限でSSH接続できるようにしておく
-
パスワード認証を有効にする
参考:SSHのパスワード認証設定をする
設定を変更した場合は、必ずsystemctl reload sshd
を入力し、変更を反映させてください。
設定後は、コマンドプロンプトでssh root@VPSのIPアドレス
を入力し、パスワードを入力すればSSH接続できます。
①一般ユーザーを追加する
rootでパスワードを使ってログインし、以下のコマンドを入力します。
adduser ユーザー名
Conoha公式では、useradd ユーザー名
を入力とありますが、Ubuntuの場合、公開鍵をしまうhomeディレクトリが作成されないので、useraddの代わりにadduser ユーザー名
を入力します。
パスワードを2回入力し、名前・電話番号などを聞かれますが、Enterでスキップします。
最後に、この情報で登録していいか聞かれるのでyを入力し完了です。
root@IPアドレス:~# adduser test
Adding user `test' ...
Adding new group `test' (1001) ...
Adding new user `test' (1001) with group `test' ...
Creating home directory `/home/test' ...
Copying files from `/etc/skel' ...
New password: ←セキュリティのため、入力しても表示されません
Retype new password:
passwd: password updated successfully
Changing the user information for test
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] y
②公開鍵と秘密鍵を作成する
まずローカルに戻り、ホームディレクトリ下に、鍵を保存する.sshディレクトリを作成します。
cd C\Users\ユーザー名
mkdir .ssh
次に、.sshディレクトリに移動し、公開鍵と秘密鍵のペアを作成します。
cd .ssh
ssh-keygen -t ed25519 -f 鍵の名前
今回は-t(作成する鍵の暗号化形式の指定)と-f(鍵の名前の指定)のオプションを使用しましたが、使用しなくても作成できます。
他のオプションについてはこちら↓
【 ssh-keygen 】コマンド――SSHの公開鍵と秘密鍵を作成する
パスフレーズを聞かれるので、自分で決めた文字列を2回入力します。
パスフレーズとは、サーバーへログインするためのものではなく、秘密鍵にアクセスするための秘密の文字列です。
Enterを押せば、パスフレーズを設定せずに鍵を作成できますが、セキュリティを強化のため、設定することをお勧めします。
.sshディレクトリ内に
・「鍵の名前.pub」(公開鍵)
・「鍵の名前」(秘密鍵)
の二つのファイルができたので、公開鍵をVPSへ保存していきます。
③VPSに公開鍵を保存する
VPSに先ほど作成したユーザー名でパスワード認証にてログインし、こちらでも.sshディレクトリを作成し、パーミッションを変更します。
パーミッションとは、そのファイルに対して読み書き・実行などを行う権限のことです。
今回は700に設定します。
参考:chmodについて
mkdir .ssh
chmod 700 .ssh
ローカルに戻り、scpコマンドで公開鍵をVPSにコピーします。
参考:SCPコマンドについて
scp 鍵の名前.pub ユーザー名@VPSのIPアドレス:~/.ssh/authorized_keys
これを入力することで、公開鍵の名前を「authorized_keys」に変えてVPSへ保存でき、
きちんと公開鍵として認識してくれるようになります。
Linux系で使える、「ssh-copy-id」という公開鍵をサーバーに送り込める便利なコマンドがあるのですが、今のところWindowsでは使えません。
パスワードを入力し、公開鍵のコピー完了です。
④パスワード認証を無効にする
rootでログインしてください。
参考:viコマンドの使い方
vi /etc/ssh/sshd_config
(変更前)
PasswordAuthentication yes
↓
(変更後)
PasswordAuthentication no
systemctl reload sshd
で変更を反映します。
これで公開鍵認証ができるようになっているはずなので、SSH接続してみましょう。
ssh -i 秘密鍵ファイル名 ユーザー名@VPSのIPアドレス
以下のように表示されれば接続成功です。
ユーザー名@VPSのIPアドレス:~$
ちなみに、SSH接続の度にこのコマンドを毎回入力するのがめんどくさいな~という方は、こちらの設定を行うとちょっと接続が楽になります。
~/.ssh/configを使ってSSH接続を楽にする
補足
公開鍵の登録時など、SSH接続をしてみるとこんなエラーがでるときがあります。
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions for 'C:\.ssh\test-key.pub' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "C:\.ssh\test-key.pub": bad permissions
test@XX.XXX.XXX.XX: Permission denied (publickey).
直訳すると「秘密鍵ファイルが保護されてないよ!」となります。
このエラーを解決するには、対象ファイルのアクセス権を自分自身だけ読み書きできるように設定してあげます。
これまたLinux系ですと、先ほど使用した「chmod」という便利なコマンドがあるのですが、Windowsでは使えません。
結局、きちんと秘密鍵ファイルをユーザーフォルダ下に置くことでエラーが出なくなりました。