さわみ、SSH接続を鍵認証で行う

どういうことかよくわかってませんが、ネコでもわかる!さくらのVPS講座 ~第二回「サーバーをさわってみよう!」で、やることをオススメされていた「SSH接続を鍵認証で行う」設定をやります。

https://manual.sakura.ad.jp/vps/support/technical/ssh-ch.html
https://knowledge.sakura.ad.jp/3543/

鍵認証とは

そもそも鍵認証とは一体何でしょうか?

デフォルトではssh接続は公開鍵認証ではなく、パスワード認証されるよう設定されています。
この状態では、
・パスワードを知っている
・サーバーにアクセス出来る手段がある

この条件が揃っていれば、誰でもサーバーにアクセス出来て危険です。
これを鍵認証のみssh接続を許可するように設定変更しましょう。

パスワード認証ではなく鍵認証でログインするように設定を変更するというもののようです。
この設定さえすれば万が一パスワードが流出してしまっても不正アクセスされずに済むようです。

すごいですね!

鍵認証でSSH接続できるように設定

ローカル環境で公開鍵と秘密鍵を作る

Macを使っているのでMacのやり方でやります。

// 公開鍵と秘密鍵を作る
$ cd ~/.ssh/
$ ssh-keygen -f client_rsa -t rsa -b 2048

// 作った公開鍵をVPSサーバに設置
$ ssh-copy-id -i ~/.ssh/client_rsa.pub -p [SSHのポート番号] vpsuser@XXX.XXX.XXX.XXX
// 公開鍵認証でログイン
$ ssh -i ~/.ssh/client_rsa  vpsuser@XXX.XXX.XXX.XXX

さわみの場合、前回 SSHのポート番号を変更したので -p が必要でした。

$ ssh -i ~/.ssh/client_rsa -p [SSHのポート番号] vpsuser@XXX.XXX.XXX.XXX

SSHポート番号を変更していなければ -p は不要です。

ユーザーパスワードでログインできないように設定

$ ssh -p [SSHのポート番号] vpsuser@XXX.XXX.XXX.XXX

あれ?一般ユーザーでログインできちゃうぞ?
と思ったら、リモートからのアクセスを公開鍵認証のみに設定していませんでした。

# vi /etc/ssh/sshd_config
PasswordAuthentication  no
ChallengeResponseAuthentication  no
UsePAM  yes

もう一度一般ユーザーでログインしてみます。

$ ssh -p [SSHのポート番号] vpsuser@XXX.XXX.XXX.XXX
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

これで普通のログイン認証でログインできなくなりました!
ログインできるのは公開鍵のみです。

セキュリティが少し向上しました!

あとがき

よくよく考えたら公開鍵でログインするならポート番号を変更しなくてもよかったのでは??

と思いましたが、ポート22番で攻撃を受ける度に処理をしないといけないことを考えると、やはりポート番号を変更して22番を遮断してしまった方が安全だと思いました。

フォローお願いします