SSH認証を公開鍵暗号方式に変更

 パスワード認証方式だとパスワードが成功するまで無限に?アタックかけられるので公開鍵暗号方式の認証に変更します。
 鍵の生成にはPuTTYを使って生成。
 サーバの接続にもPuTTYを使ってWindows端末から接続する方法を記載します。

目次
 ・PuTTYを使って公開鍵(PublicKey)と秘密鍵(PrivateKey)を生成
 ・公開鍵の設置
 ・PuTTY & 公開鍵認証 でアクセス

 前提条件としてWindows端末でPuTTYを使って鍵を作るので、Windows端末にPuTTY 64bit版をインストールしておいてください。デフォルト設定でインストールすれば鍵を作るためのツール「PuTTYgen」もインストールされます。

PuTTYを使って公開鍵(PublicKey)と秘密鍵(PrivateKey)を生成

スタートから「PuTTY(64-bit) ー PuTTYgen」を起動します。
PuTTY Key Generator 画面が表示されるので
①:アルゴリズムの選択
 2021年現在、RSAより強固で速いといわれている「Ed25519」を選択。

②:乱数発生
 「Generate」をクリックします。


すると、鍵の乱数生成に入るので赤枠で囲った「Key」と書かれたエリア内で無作為にマウスを動かしてください。緑のゲージが進んでいきます。


マウスを動かしていると表示が変わり下記のような画面になります。

③:パスフレーズキーの設定
 この赤枠の2カ所にパスワードを入力(下段は入力確認)する事でSSHログイン時に、OSユーザのパスワードとは別の「パスフレーズキー」の入力を求められるので、この欄に入力したパスワードを入力する事でログインが完了します。
 もしログインの度にパスワード入力するのめんどくせぇなぁ~と思うのであればここに文字を入力しなければ、ここで生成した鍵認証方式を使ってSSHログインする事でパスワードの入力なしでログインすることができます。まぁ~セキュリティーを上げる為にはなるべく設定したほうがいいと思いますが・・・

④:公開鍵の作成
 このボタンをクリックする事で(仮の)公開鍵を生成します。
 どこに保存するかのウィンドウが開くので、任意の場所にファイル名「Public_Key」として保存します。

⑤:秘密鍵の作成
 このボタンをクリックする事で秘密鍵を生成します。
 どこに保存するかのウィンドウが開くので、任意の場所にファイル名「PrivateKey」として保存します。 秘密鍵は「.ppk」という拡張子が付きます。

公開鍵の設置

 先ほど④で作成した (仮)公開鍵を、ログインしたいサーバに設置します。
 公開鍵認証を使ってログインしたいユーザ(今回はfedoraユーザ)のホームディレクトリ配下に「.ssh」ディレクトリを作成してその中に (仮)公開鍵「Public_Key」をWinSCPなどを使って設置します。今回はWinSCPの使い方は記載しません。

 パーミッションに関しては /home/fedora/.ssh は 700
             /home/fedora/.ssh/Public_Key は 644 とかでよいです。(どうせこのPublic_Keyは最終的には抹殺するので。)

 コンソール(サーバに直接つながってるキーボードやモニタ)等を使ってfedoraユーザでログイン。
 ssh-keygen コマンドを使ってauthorized_keysファイル(暗号化されたファイル)を作成します。

cd /home/fedora/
// .sshディレクトリの確認
ls -a
.  ..  .bash_logout  .bash_profile  .bashrc

// .sshディレクトリの作成
mkdir .ssh
chmod 700 .ssh
cd .ssh
ls
Public_Key

// 公開鍵の暗号化
ssh-keygen -i -f Public_Key >> authorized_keys
ls
authorized_keys     Public_Key

// 作成したauthorized_keys ファイルのパーミッション変更
chmod 400 authorized_keys

// Public_Key は削除
rm -f Public_Key
ls
authorized_keys

参考
 ・ssh-keygen コマンドで 「>>」(追記)にしているのは、公開鍵を追加することができる為。いわゆる複数の公開鍵を1つのユーザに設定できるって事。
 ・authorized_keysのパーミッションは公式では600を推奨しているが、なぜ書き込み権限を与えないといけないのかわからず、400にしてみてもアクセスできるのでアタイは400にしている。
  もし動かなかったら600にして下さい。それが公式なので・・・

PuTTY & 公開鍵認証 でアクセス

 PuTTYを起動したらウィンドウ左(カテゴリー)の 「Connection - SSH - Auth」を選択。
 Browse ボタンをクリックして⑤で作成した秘密鍵を指定します。


 ウィンドウ左(カテゴリー)の「Session」を選択。
 「Host Name(or IP address)」に 公開鍵認証を許可しているIPを入力して「Open」をクリック


ついでに・・・
この画面の赤枠部分「Saved Sessions」に名称を入れて「Save」ボタンをクリックすると設定内容が保存され、次回以降保存名(赤い下線部分)をWクリックするだけで接続できるようになります。


ターミナルウィンドウが表示されるので③で設定したパスフレーズを入力してEnterを押すとログインすることができます。

以上で、公開鍵認証を使ってログインができました~。