勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

CentOS6系環境のVPSに対して公開鍵認証を設定する方法

   2024/02/22  サーバー

本番稼動しているVPSサーバーでSSHの接続ログをかなり久しぶりに見ると、不正ログインを試しみているログが多数あった。そういえばVPSサーバーの立ち上げ当初、参考にしていた記事に公開鍵認証が云々という項目があったが難易度が高く感じられ、結局パスワード認証のままずっと運営していた。今になって設定してみると特に問題なく出来たので設定方法をメモ。

 

サーバー環境と事前注意

サーバーはCentOSでバージョンは6.9になる。SSH接続する際のユーザーはtest_userとする。また、設定をミスってSSHログインできなくなると困るので、作業とは別窓でSSH接続しておく。

 

設定方法

test_userでSSH接続を行う。もしくは以下コマンドでユーザーを変更する。

su - test_user

以下コマンドを打つと「/test_user/.ssh」ディレクトリ内に「id_rsa.pub(公開鍵)」と「id_rsa(秘密鍵)」が生成される。パスワードなしでいったので、ひたすらエンターを押しておけば良い。

#鍵のタイプをrsaとして公開鍵を作成する
ssh-keygen -t rsa

以下で各種設定を行う。

#鍵が生成されたディレクトリに移動
cd /test_user/.ssh

#公開鍵をauthorized_keysに統合
cat id_rsa.pub >> authorized_keys

#元の公開鍵は削除
rm id_rsa.pub

#公開鍵のパーミッションを600へ変更
chmod 600 authorized_keys

#秘密鍵を配置するディレクトリのパーミッションを700へ変更
#配置先はどこでもいいらしい。今回は「/test_user/」ディレクトリを使用
chmod 700 ./

公開鍵を何らかの方法でダウンロードする。scp接続でダウンロードがいいらしいが面倒くさかったので適当なディレクトリにコピーしてFTPで落として、サーバ側の秘密鍵はすぐに削除した。

以下でパスワード認証を禁止する。

#root権限になるか、sudoコマンドを使ってsshの設定ファイルを編集
sudo vi /etc/ssh/sshd_config

#PasswordAuthentication no → PasswordAuthentication yes
#ChallengeResponseAuthentication no → ChallengeResponseAuthentication yes

尚、私の環境では後者は最初からnoになっていた。編集後は以下で再起動。

sudo service sshd restart

 

接続確認

SSH接続ソフトでパスワード認証が禁止されているか、秘密鍵でログインできるか、他のユーザーではログインでいないかテストする。RLoginで秘密鍵の使用方法は以下で確認。

https://taitan916.info/blog/archives/2833

 

その他

ユーザーの変更方法が分からず調べたところsuコマンドで変更できると知って驚いた。suコマンドはroot権限になる為のコマンドだと思っていた。また、スーパーユーザーの略だと思っていたけど違うみたい。

http://blog.setunai.net/20070724/su%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%AF%E3%82%B9%E3%83%BC%E3%83%91%E3%83%BC%E3%83%A6%E3%83%BC%E3%82%B6%E3%81%AE%E7%95%A5%E3%81%A7%E3%81%AF%E3%81%AA%E3%81%84/

 

参考

https://qiita.com/ir-yk/items/af8550fea92b5c5f7fca
https://www.websec-room.com/2014/01/18/1647
https://qiita.com/nnahito/items/dbe6fbfe347cd66ae7e6
http://lovepeers.org/2012/09/18/openssh-minimum-configs/
http://www.atmarkit.co.jp/ait/articles/1503/20/news007.html

 - サーバー

  関連記事

CPIのレンタルサーバでRewriteEngineを使用する場合の注意点
CPIのレンタルサーバでRewriteEngineを使用する場合の注意点

CPIのレンタルサーバで開発する案件があり、htaccessファイルを用いてRe ...

Cockpitで一定時間操作がない場合は自動でログアウトさせる方法
Cockpitで一定時間操作がない場合は自動でログアウトさせる方法

Cockpitのセキュリティ対策として〇分以上操作がない場合に自動でログアウトさ ...

HSTS(HTTP Strict Transport Security)の設定方法
HSTS(HTTP Strict Transport Security)の設定方法

あるサイトのセキュリティ対策としてHSTS(HTTP Strict Transp ...

Linuxのシェルスクリプトについて
Linuxのシェルスクリプトについて

とあるサイトで自動更新で随時データベースにデータが挿入されるという機能があった。 ...

htaccessを置いてあるフォルダのファイルを参照
htaccessを置いてあるフォルダのファイルを参照

曖昧だけどhtaccessでベーシック認証とかIP制限かかってる フォルダ内のプ ...