sshで公開鍵による認証にする
公開鍵による ssh ログイン
サーバは公開鍵によるログインに限定して、パスワードでのログインを禁止したほうがいい、という記事を見かけました。
なんでも、パスワードはブルートフォースアタックで突破されやすいとか。
アタック失敗回数で一定時間弾いたりとかするのも有効らしいですが、お手軽な公開鍵登録によるログインにしようと思います。
公開鍵の作成
いつもどおり、公開鍵を作成します。
どこに作ったか忘れがちなので、 ~/.ssh/
配下に作成。
デフォルトでは id_rsa
という名前で作成されます。
接続先はたぶんこの先増えていくので、わかりやすい名前にしておきましょう。
-f
オプションで出力先を指定することもできます。
# クライアントPCで鍵を作る
cd ~/.ssh
ssh-keygen -t rsa -b 4096 -f [出力ファイル名]
鍵を作成するときにファイル名と、パスワードを聞かれます。
ここでパスワードを入力せずに Enter で進むと、パスワード無しでのログインができるようになります。
リモートへ公開鍵を転送する
作成した公開鍵をサーバに送りつけます。 id_rsa
の部分は、公開鍵作成時の名前にしてください。
# リモートへ公開鍵を転送する
ssh-copy-id -i ~/.ssh/id_rsa.pub [リモートユーザー]@[リモートサーバーのホスト名]
リモートに SSH で接続する
無事登録できたら接続してみましょう。
id_rsa
の部分は(ry
# リモートにSSHで接続する
ssh -i id_rsa [リモートユーザー]@[リモートサーバーのホスト名]
これで公開鍵でのログインができるようになりました!
ここまでのコマンド例
自分の環境に合わせて書き換えましょう!
# クライアントPCで鍵を作る
ssh-keygen -t rsa -b 4096 -f id_my_server
# リモートへ公開鍵を転送する
ssh-copy-id -i ~/.ssh/id_my_server.pub nekoha@192.168.1.10
# リモートにSSHで接続する
ssh -i ~/.ssh/id_my_server nekoha@192.168.1.10
さらにらくするために config を更新する
~/.ssh/config
を編集して、ssh コマンドを簡潔にします。
# configファイルの編集
vi ~/.ssh/config
これに設定を追記します。
Host my_server
Hostname 192.168.1.10
User nekoha
IdentityFile ~/.ssh/id_my_server
この設定が済めば、Host
に設定したエイリアスの場合に上記設定が使われます。
下記のように、ファイル名の指定などは不要で ssh できるようになります!
ssh my_server
接続先サーバで、ユーザー・パスワードによる認証を拒否する
さて、公開鍵によるログインは可能になりましたが、肝心のサーバ側ではパスワード認証が有効なままです。
設定でパスワードによるログインを拒否するようにしていきます。
/etc/ssh/sshd_config
から、下記のように設定します。
コメントを外したり、パラメータを書き換えたりして対応してください。
# パスワード認証拒否
PasswordAuthentication no
# 公開鍵認証を許可
PubkeyAuthentication yes
設定後は、 sshd
サービスを再起動します。
sudo service sshd restart
以上です!
参考サイト
SSH 公開鍵認証で接続するまで - Qiita
https://qiita.com/kazokmr/items/754169cfa996b24fcbf5
ssh でパスワード認証を禁止するには - @IT
https://atmarkit.itmedia.co.jp/flinux/rensai/linuxtips/430dnypsswdacces.html