さくらVPSでSSH公開鍵認証を設定する

技術

SSH接続の際、パスワード認証だけの場合、ブルートフォース(総当たり)攻撃で簡単に突破される可能性がある。
実際、さくらVPSを導入した当初、外部からのアクセス試行が何千回と発生していた。

IPで制限したり、N回失敗で無効化にする方法もあるが、今回はより堅牢な方法として公開鍵認証を導入する。

公開鍵・秘密鍵を作成する

公開鍵と秘密鍵のペアをログイン元の端末で作成する。

$cd ~/.ssh
$ssh-keygen -t rsa -b 4096 -f <ファイル名> -C <アドレス>

上記を実行すると、パスフレーズを求められるので入力する。
最終的に、
<ファイル名>という秘密鍵、
<ファイル名>.pubという公開鍵が生成される。

秘密鍵はなくしたり端末が故障すると一発で終わりなので、バックアップ方法も注意すること。

公開鍵を配布する

rootユーザであればVPSのコンソールから可能であるが、rootユーザでのログインは非推奨なので、直接サーバに配布を行う。

#任意のユーザでログインをする
$ssh sample@sample.vs.sakura.ne.jp
#ログイン先で公開鍵の置き場所を作成する
$vi ~/.ssh/authorized_keys 
#<ファイル名>.pubの中身をコピペする

公開鍵の名前はauthorized_keysにし、権限を600に変更する。
権限を変更しないと、正しく認証できないため注意。

#公開鍵の権限を変更する
$chmod 600 authorized_keys

パスワード認証の無効化設定をする

最後に、sshdを修正し、rootログインの無効化・パスワード認証の無効化を行う。

#サーバー側で実行
$vi /etc/ssh/sshd_config

#以下を設定する
PermitRootLogin no
PasswordAuthentication no
PermitEmptyPasswords no
X11Forwarding no

設定を反映のためsshdを再起動する。

 $sudo systemctl restart sshd

これで設定は完了。以降は以下でssh接続を行う。

ssh -i ~/.ssh/<秘密鍵> <ユーザ名>@sample.vs.sakura.ne.jp

sshの際に、パスワードを求められるが、秘密鍵を生成した時に求められたパスワードを入力する。

コメント

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