公開鍵認証とパスワードログインの禁止
現在は、パスワードを入力すれば作成したユーザーでもrootでもログインできてしまう状況です。
セキュリティを高めるため
- rootではそもそもログインできない
- 作成したユーザーは公開鍵認証を利用しないとログインできない
という2つの設定を行い、セキュリティを高めます。
rootログインを禁止する
sshd_configと呼ばれる、sshでのアクセス設定のファイルを編集して、rootログインを禁止します。
まず、sshを利用して作成したユーザーでログインし、 あらかじめ、現在のsshd_configファイルをコピーしておきます。
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.old
バックアップが確保できたので、vimを利用してsshd_configを編集します。
sudo vim /etc/ssh/sshd_config
として、sshd_configファイルを編集しましょう。
ファイルの中ほどに
PermitRootLogin yes
と書かれた部分があるので、
PermitRootLogin no
に書き換えることでssh経由でのrootログインが禁止されます。
さらに、設定を反映させるため、sshを再起動しておきましょう。
sudo systemctl restart sshd.service
でsshdのサービスを再起動させることが可能です。
ここまで完了したら、exitしてsshでrootログインしてみましょう。パスワードの入力後に正しいパスワードにもかかわらず弾かれていれば成功です。
作成したユーザーの公開鍵認証を設定する
続いて、作成したユーザーについて、公開鍵認証でアクセスする設定に変更します。
鍵ペアの生成
まずは、ローカルのユーザーディレクトリにssh用の隠しフォルダを作成しましょう。
mkdir ~/.ssh
さらに、このディレクトリに移動します。
cd ~/.ssh
次に鍵のペアを作成します。
ssh-keygen -t rsa -b 2048
するといくつか質問があるので回答しましょう。
Enter file in which to save the key: [鍵の名前]
Enter passphrase: [鍵のパスワードを設定]
Enter same passphrase again: [上と同じ内容を入力]]
これで公開鍵と秘密鍵の鍵ペアが作成されます。 lsで
- [鍵名]
- [鍵名].pub
という2つのファイルが作成されていることを確認しましょう。pubがついているものが公開鍵、ついていないものが秘密鍵となります。
chmod 600 [鍵名]
として、オーナーのみ読み書き可能に設定しておきましょう。
VPS側に公開鍵を設置
続いて、VPS側に今回作成した鍵ペアのうち、公開鍵を設置します。もう一つ別のターミナルを開いてsshで接続し、
cd ~
mkdir .ssh
chmod 700 .ssh
cd .ssh
と、ホームディレクトリに.sshディレクトリを作成し、cdコマンドで移動しましょう。
そして
vim authorized_keys
として認証される公開鍵リストのファイルを作成し、元のターミナルで
cat [鍵名].pub
で表示される公開鍵の内容を貼り付けて保存しておきましょう。
その上で、
chmod 600 authorized_keys
とパーミッションを設定すれば完了です。
sshd_configの書き換え
sshd_configを書き換えて、公開鍵認証を許可し、パスワードログインを禁止します。
sudo vim /etc/ssh/sshd_config
公開鍵認証を許可(コメントアウトを外す)
PubkeyAuthentication yes
パスワードでのログインを禁止
PasswordAuthentication no
最後に
sudo systemctl restart sshd.service
上記を実行して、sshを再起動して設定を反映させましょう。 このまま、VPSに接続しているターミナルは開きっぱなしにしておきましょう。設定ミスで接続がうまくいかない場合に、修正することができます。誤ってターミナルを閉じてしまった場合には、sshでは接続できないためconohaのコントロールパネルから設定変更を行うことになります。
sshでの公開鍵認証をテスト
では、別ターミナルを開いて、sshで公開鍵認証をしてみましょう。
cd ~/.ssh
で移動し、
vim config
として接続設定を作成します。
Host [任意の接続先名(conoha_wordpressなど)]
HostName [VPSのIPアドレス]
User [作成したユーザー名]
Port 22
IdentityFile ~/.ssh/[鍵名]
インデントはスペース2つで行いましょう。 接続設定を保存したら、
ssh [設定した接続先名]
で接続できるようになります。設定した鍵ペアのパスフレーズを尋ねられますので、入力するとVPSにログインすることができます。