デフォルトでは、ユーザー名とパスワードだけで ssh ログインできます。 少しでもセキュリティ強化するため、認証キー必須の方式に変更します。
$ ssh-keygen -t rsa -b 4096 -C [メールアドレスなどのコメント] ※ .ssh 配下に、id_rsa, id_rsa.pub が生成されます。
$ cat .ssh/id_rsa.pub >> .ssh/authorized_keys
$ mv .ssh/id_rsa . $ chmod 644 id_rsa TeraTermProの「ファイル(F)」→「SSH SCP...」を選択して、 From: ~/id_rsa To: <任意のディレクトリ> を指定して、Receive ボタンを押下する。
$ rm id_rsa※本来は、PCで生成して、id_rsa.pub を接続先の .ssh/authorized_keys に追加します。(秘密鍵 id_rsa をネットワーク上に流さないこと。)
/etc/ssh/sshd_config ファイルの設定を実施する。
# 変更しておくと、気休め程度ではあるがセキュリティUP # 当然変更した場合、クライアント側はデフォルトでは # 接続できず、ポート番号を指定する必要があります。 Port [任意]
# root ログインを拒否します。 # ※レンタルサーバ等の場合、きちんと一般ユーザでログインできること # su or sudo コマンド等ができることを確認した上で設定してください。 # # 以下のオプションもありますが・・・yesかnoで事足りるかと。 # without-password : パスワード認証の場合拒否 # forced-commands-only : 公開鍵認証にてパスフレーズが設定されている場合のみ許可 PermitRootLogin no
# 厳格なモード。通常このままで良いです。 # yes の場合、自分のディレクトリが他人から見えてしまっている状態の場合 # ログインが拒否されます。 #
# パスワードのみによる認証を無効化する PasswordAuthentcation no
# プロトコルバージョン 2 を使用する設定 Protocol 2 # RSA認証 (SSH1) を無効化する設定 RSASAuthentication no
# /etc/init.d/ssh restart
# 特権分離設定。デフォルト yes の分離となっています。 # sandbox にすることで、認証するまで多くの制限がかかります。 UsePrivilegeSeparation sandbox
# ログイン猶予時間です。制限時間内にログインできないと接続が切れます。 # 120秒以内にログインが難しい場合のみ値を伸ばしてください。 # 0にすると制限時間が無くなります。 LoginGraceTime 120
# yes の場合IPアドレスとホスト名の関係を確認します。 # 名前解決に時間がかかる場合はログインが待たされます。 # ローカルで使用するサーバであれば no で問題ないと思います。UseDNS no