0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Conoha VPS】TeraTerm等を使わずに、一般ユーザーで公開鍵認証ができるようにする

Last updated at Posted at 2023-03-28

Conoha VPS公式のスタートアップガイドに背き、勉強もかねてTeraTermなどを使わずにどうにか
一般ユーザー追加⇒鍵作成⇒SSH接続(公開鍵認証) までできるようにしてみました。
※初学者向けです。

環境

公開鍵作成元

  • Windows11
  • コマンドプロンプト

公開鍵送付先

  • Conoha VPS
  • Ubuntu22.04(64bit)

前提

  • root権限でSSH接続できるようにしておく

    参考:ConoHa VPS 公開鍵認証でSSH接続

  • パスワード認証を有効にする

    参考:SSHのパスワード認証設定をする
    設定を変更した場合は、必ずsystemctl reload sshdを入力し、変更を反映させてください。
    設定後は、コマンドプロンプトでssh root@VPSのIPアドレスを入力し、パスワードを入力すればSSH接続できます。

①一般ユーザーを追加する

rootでパスワードを使ってログインし、以下のコマンドを入力します。

VPS
adduser ユーザー名

Conoha公式では、useradd ユーザー名を入力とありますが、Ubuntuの場合、公開鍵をしまうhomeディレクトリが作成されないので、useraddの代わりにadduser ユーザー名を入力します。

パスワードを2回入力し、名前・電話番号などを聞かれますが、Enterでスキップします。
最後に、この情報で登録していいか聞かれるのでyを入力し完了です。

VPS
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ディレクトリを作成します。

local
cd C\Users\ユーザー名
mkdir .ssh

次に、.sshディレクトリに移動し、公開鍵と秘密鍵のペアを作成します。

local
cd .ssh
ssh-keygen -t ed25519 -f 鍵の名前

今回は-t(作成する鍵の暗号化形式の指定)と-f(鍵の名前の指定)のオプションを使用しましたが、使用しなくても作成できます。

他のオプションについてはこちら↓
【 ssh-keygen 】コマンド――SSHの公開鍵と秘密鍵を作成する

パスフレーズを聞かれるので、自分で決めた文字列を2回入力します。

パスフレーズとは、サーバーへログインするためのものではなく、秘密鍵にアクセスするための秘密の文字列です。
Enterを押せば、パスフレーズを設定せずに鍵を作成できますが、セキュリティを強化のため、設定することをお勧めします。

.sshディレクトリ内に
・「鍵の名前.pub」(公開鍵)
・「鍵の名前」(秘密鍵)
の二つのファイルができたので、公開鍵をVPSへ保存していきます。

③VPSに公開鍵を保存する

VPSに先ほど作成したユーザー名でパスワード認証にてログインし、こちらでも.sshディレクトリを作成し、パーミッションを変更します。
パーミッションとは、そのファイルに対して読み書き・実行などを行う権限のことです。
今回は700に設定します。
参考:chmodについて

VPS
mkdir .ssh
chmod 700 .ssh

ローカルに戻り、scpコマンドで公開鍵をVPSにコピーします。
参考:SCPコマンドについて

local
scp 鍵の名前.pub ユーザー名@VPSのIPアドレス:~/.ssh/authorized_keys

これを入力することで、公開鍵の名前を「authorized_keys」に変えてVPSへ保存でき、
きちんと公開鍵として認識してくれるようになります。

Linux系で使える、「ssh-copy-id」という公開鍵をサーバーに送り込める便利なコマンドがあるのですが、今のところWindowsでは使えません。

パスワードを入力し、公開鍵のコピー完了です。

④パスワード認証を無効にする

rootでログインしてください。
参考:viコマンドの使い方

VPS
vi /etc/ssh/sshd_config

(変更前)
PasswordAuthentication yes
    ↓
(変更後)
PasswordAuthentication no

systemctl reload sshdで変更を反映します。

これで公開鍵認証ができるようになっているはずなので、SSH接続してみましょう。

local
ssh -i 秘密鍵ファイル名 ユーザー名@VPSのIPアドレス

以下のように表示されれば接続成功です。

VPS
ユーザー名@VPSのIPアドレス:~$

ちなみに、SSH接続の度にこのコマンドを毎回入力するのがめんどくさいな~という方は、こちらの設定を行うとちょっと接続が楽になります。
~/.ssh/configを使ってSSH接続を楽にする

補足

公開鍵の登録時など、SSH接続をしてみるとこんなエラーがでるときがあります。

local
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         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では使えません。

結局、きちんと秘密鍵ファイルをユーザーフォルダ下に置くことでエラーが出なくなりました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?