やりたい事
レンタルサーバーを使っていると、攻撃されることがよくあり
SSHパスワード認証を無効化して機密キーだけでログインできるようにしたい。
注意点
何かあって接続設定がうまくいかない場合があるかも知れないため
セッションを1つぐらい残しておくこと
手順
- rsaキーを生成する
- 生成した公開キー、機密キーを取って置く
- 生成した公開キーを認証済みキーファイルに書き込む
- sshd_configファイルを編集し、キー認証を有効化・パスワード認証を無効化する
- private key指定でログインできることを確認する
- パスワードで接続できないことを確認する
rsaキーを生成する
※既に生成されている場合はスキップしてOK
Githubの説明を参照
https://help.github.com/en/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
# github 認証などに使えるので取って置く
cat ~/.ssh/id_rsa.pub
# ssh接続の認証に使うのはこちら!!!
cat ~/.ssh/id_rsa
public key => authorized_keysに書き込み
cd ~/.ssh
ls -la
cat id_rsa.pub > authorized_keys
sshd_config設定
場所
/etc/ssh/sshd_config
/etc/ssh/sshd_config
# rootのログインは個人のニーズによって設定していただく
PermitRootLogin yes
### 認証済みファイル
AuthorizedKeysFile .ssh/authorized_keys
# 認証方式設定
PasswordAuthentication no
PubkeyAuthentication yes
サービス再起動して設定を適用
# centos
systemctl restart sshd
確認
# パスワードでログインしようとすると、エラーになる
Disconnected: No supported authentication methods available (server sent: publickey,gssapi-keyex,gssapi-with-mic)
# private key指定でログイン成功する
以上。