2022-03-12

sshで公開鍵による認証にする

Linux
Ubuntu

公開鍵による 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

接続先サーバで、ユーザー・パスワードによる認証を拒否する

さて、公開鍵によるログインは可能になりましたが、肝心のサーバ側ではパスワード認証が有効なままです。
設定でパスワードによるログインを拒否するようにしていきます。

/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


猫派 / 基本インドア / ガジェット大好き / RDP推進派 / 自作キーボード
コロナ禍の趣味はPC+VRでゲーム。最近「マンガ新刊チェック!」というサービスを作りました。
最近のゲーム:お休み中

→ Policy