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

Subscribe to 猫好きが猫以外のことも書く

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
Subscribe