勉強したことのメモ

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

 - サーバー

  関連記事

CentOSでPHPを5.5から5.3にバージョンダウンする方法

事情があってVPSに入れているPHPを5.5系から5.3系にバージョンダウンした ...

VPSに無料SSLのLet's Encryptを導入

SSLといえば有料という認識だったが、無料のものも出てきているという話を聞いた。 ...

WordPress Popular Postsのサムネイルが表示されない

WordPressの人気記事を表示させるWordPress Popular Po ...

AlmaLinux8系にChronyをインストールしてサーバの時刻同期を行う方法

以前にCentOS系でNTPによるサーバの時刻同期を行った。今回AlmaLinu ...

ムームードメインで取得したドメインをムームードメイン側のDNSでエックスサーバを使う方法

ムームードメインでドメインを取得し、エックスサーバで使う場合にエックスサーバ側の ...