大体おんなじ毎日

エンジニアじゃないけど技術ブログ書いています

おひとり様Misskey鯖構築日記《3》

今回はssh接続の準備からやっていきます。

今回ものえるさんの記事を参考に進めていきます。

blog.noellabo.jp

まずは作業マシン(自宅PC)での設定から。

ssh-keygen -t ed25519

上記コマンドで秘密鍵

~/.ssh/id_ed25519

公開鍵が

~/.ssh/id_ed25519.pub

以上に生成されました。

次に.ssh/configをメモ帳で作成します。

Host (このサーバに接続する際の任意の名前)
        User (サーバ上に作成する作業ユーザー名)
        Port 22
        Hostname (サーバのIPv4アドレス)
        IdentityFile (秘密鍵のファイルパス)

メモ帳で作成すると.txtという拡張子がついてしまうので、名前の変更で.txtを削除しておきます。

sshでサーバに接続。

初回はrootで接続します。

ssh root@(このサーバに接続する際の任意の名前) -p 22

初めて接続するサーバなので本当にここに繋いでいいのか?という内容のメッセージが表示されるのでyesと入力します。

rootのパスワードを訊かれたら、Vultrのサイトでコピーしたrootのパスワードをコピペします。

作業用ユーザ作成

rootのままで作業するのはセキュリティ上好ましくないので、作業用ユーザを作成します。

先ほど作ったconfigに入力した作業用ユーザ名と同じにします。

adduser (作業用ユーザ名)

パスワードを訊かれるので設定します。

その他の項目はデフォルトのままでも良いのでenterで飛ばします。

次に作業ユーザーを、sudoを許可するグループに追加します。

usermod -aG sudo (作業ユーザ名)

作業ユーザーに切り替えて、sshを鍵で接続できるように設定します。

sudo -iu (作業ユーザ名)
mkdir .ssh
chmod 700 .ssh

.sshというディレクトリを作成したら、公開鍵をこのディレクトリ内に入れるのですが、のえるさんの記事ではwindows上で公開鍵をcatコマンドで参照して、.sshディレクトリにファイルを作って公開鍵をコピペするという方法が書かれていましたが、おそらくwindows上でcatコマンドが使えているのはbashを使えるように予め設定していたのだと思います。

この段階でbashを使えるようにしてもいいのですが、再起動が必要になり手間なので別の手段でwindows上にある公開鍵をサーバに送ることにしました。

まず作業PC(Windows)のコマンドプロンプトで公開鍵のあるディレクトリに移動します。

cd .ssh

そして、scpというコマンドを使って公開鍵ファイルを先ほど作成したサーバ上の.sshディレクトリに転送します。

scp -P 22 id_ed25519.pub (作業ユーザ名)@(サーバのIPアドレス):/home/(作業ユーザ名)/.ssh

これで転送ができました。scp -P ここのオプションは大文字のPにしないとエラーになるので注意してください。

そして、再びrootでサーバにログインして作業ユーザに切り替えます。

cd .sshと入力して、.sshディレクトリに移動します。

ここでlsコマンドを叩いて、.ssh内に公開鍵ファイルが転送されて来ていることを確認します。

公開鍵として使用するには「authorized_keys」というファイル名にしないといけないので、公開鍵ファイルの名前を書き替えます。

mv id_ed25519.pub authorized_keys

上記のコマンドを入力してから改めてlsコマンドを叩いてみて、名前が変わっていたらOKです。

パーミッションを変更します。

chmod 600 authorized_keys

ここで再びのえるさんの記事を参考にしながら進めていきます。

sshdの設定を変更します。

sudo nano /etc/ssh/sshd_config

ルートのログインを禁止 PermitRootLogin no

パスワードログインを禁止 PasswordAuthentication no

また、sshのポート番号を変更したい場合は任意の番号に設定します。

以上を書き終えたら書き込んで終了にします。

ここでsshdのテストをします。 間違ったままだとsshで接続出来なくなってしまうので慎重に進めましょう。

sudo sshd -t

問題なければsshdを再起動します。

sudo systemctl restart sshd

次にファイアウォールの設定をして特定のポートだけを許可します。

sudo ufw allow 22/tcp

sudo ufw enable

ここまで正しく設定出来ていれば公開鍵と秘密鍵を使ってsshでの接続が出来る筈です。

新規にコマンドプロンプトをもう一枚開いてssh接続が出来るか確認します。

ssh (任意のサーバ名)

パスフレーズを設定している場合は訊かれます。

問題なければ次の作業に移ります。

システムのアップデートをかけます。

sudo apt update

sudo apt upgrade

アップデートが完了したら今回の作業は一旦終了にします。

次回はメモリの少ない環境向けの追加設定からやっていきます。