Tera Termで作成した公開鍵を有効化する手順【CentOS 8で確認】

はじめに

Tera Termには、公開鍵と秘密鍵をセットで生成して、公開鍵をサーバー上の適切な場所に設置することで、公開鍵認証が簡単にできるという機能がある。しかし、手順に従って作業をしたつもりであっても「ログインに失敗しました」と表示されたり、そもそも接続できないといったことがある。

そもそも、SSH接続関連の設定は、一つ間違えると接続できなくなる危険性があるため、「接続を切らない」ことが重要となる。ログインの確認をしたい場合は、接続を切らずに、Tera Termの左上の「ファイル」タブから「新しい接続」を選択することで確認できる。そこでもしログインできない場合には設定を直すことができる。

以上を前提にして、この記事では「公開鍵認証が失敗する原因」に焦点をあて、どの手順で設定していけば最も安全に設定できるかという観点で、手順をまとめた。

SELinuxを無効化する

初期状態で以下のようになれば設定は不要である。

[root ~]# getenforce
disabled

以下のようになった場合、SELinuxが有効化されているため、一時的な無効化と、再起動時に有効化しない設定をする必要がある。

[root ~]# getenforce
enforcing
[root ~]# setenforce 0
[root ~]# vi /etc/selinux/config

#SELINUX=enforcing
SELINUX=disabled

:wq

これにより、SELinuxを永続的に無効化できる。

公開鍵認証でログインする一般ユーザの作成

一般ユーザ(ここではkyohju)を作成し、そのユーザに切り替える。

[root ~]# adduser kyohju
[root ~]# su - kyohju
[kyohju ~]$

そのまま公開鍵認証を有効化するため、一般ユーザのパスワードは設定しない。

Tera Term上で公開鍵・秘密鍵のペアを作成

以下の記事を参考に作成してほしい。「鍵のパスフレーズ」に何も入力せずに作成することも可能であるが、その場合は秘密鍵の管理に気をつけたい。

【さくらVPS CENTOS7】TERATERM で公開鍵/秘密鍵によるSSH接続を設定し WINSCPで権限を強めたSFTP接続を10分で実装する事で、サーバーへのログインを”安全”に、強い権限によりファイル操作を”簡単に”閲覧する方法 - Qiita
#0前準備teratermで最初にIDとパスワードを入力してサーバにログインしてください。#1TERATERM上でSSH鍵生成します。「設定」をクリック後、「SSH鍵生成」を選択します。#2…

.sshディレクトリ、authorized_keysファイルの作成

Tera Termで作成した公開鍵を認識させるために、「.ssh」ディレクトリを作り、そこに公開鍵を転送する。

[kyohju ~]$ mkdir .ssh

公開鍵をTera Term上にSCP転送する。このとき、ディレクトリを指定しない場合、rootユーザのホームディレクトリに転送されてしまうので、ここでは「/home/kyohju」と指定する。

[kyohju ~]$ ls
id_rsa.pub

これを公開鍵として認識されるように.sshディレクトリ内に移すとともに、名前を変更する。

[kyohju ~]$ mv id_rsa.pub .ssh/authorized_keys

所有者・権限の確認

各ファイルの権限を変更する。ls -laコマンドにより、現在の所有者、権限を確認できる。

[kyohju ~]$ ls -la

drwxrwxr-x kyohju kyohju .ssh
[kyohju ~]$ chmod 700 .ssh
[kyohju ~]$ cd .ssh
[kyohju .ssh]$ ls -la

-rw-r--r-- kyohju kyohju authorized_keys
[kyohju .ssh]$ chmod 600 authorized_keys

もし所有者がrootになっていた場合は、以下のコマンドにより、ログインするユーザを所有者にする必要がある。

[kyohju ~]$ ls -la

drwxrwxr-x root root .ssh 
[kyohju ~]$ chmod 700 .ssh 
[kyohju ~]$ chown kyohju:kyohju .ssh
[kyohju ~]$ cd .ssh 
[kyohju .ssh]$ ls -la
-rw-r--r-- root root authorized_keys 
[kyohju .ssh]$ chmod 600 authorized_keys
[kyohju .ssh]$ chown kyohju:kyohju authorized_keys

ここまでできたら、rootユーザに切り替えて公開鍵認証を有効にする。

[kyohju .ssh]$ exit
[root ~]# vi /etc/ssh/sshd_config

#PubkeyAuthentication yes
PubkeyAuthentication yes

:wq

デフォルトでは公開鍵認証の部分はコメントアウトされているため、#を消せばよい。

SSHサーバ再起動により、設定を反映する。

[root ~]# systemctl restart sshd

ここでエラーメッセージが何も表示されなければ設定完了となる。Tera Termの「ファイル」タブから「新しい接続」を選択し、一般ユーザ(この場合はkyohju)でログインしてほしい。

「RSA/DSA/ECDSA/ED25519鍵を使う」を選択した上で秘密鍵を参照する。

「鍵のパスフレーズ」に何も入力していない場合は「パスフレーズ」の部分に何も入力せず、入力した場合は、そのフレーズを「パスフレーズ」に入力する。

その他の設定

以下の設定は、公開鍵認証によるログインに成功した前提で進めていく。

①ファイアウォールの設定

以下のようになった場合、既に起動している。

[root ~]# systemctl status firewalld

Active: active (running) since...

確認できたら、「:q」と打つことで確認終了できる。

以下のようになった場合は起動する必要がある。

[root ~]# systemctl status firewalld

Active: inactive (dead)

:q
[root ~]# systemctl start firewalld

ファイアウォール起動後、22222の部分に任意のポート番号(1024以上65535以下)を入れてポートを開放する。以下のように設定することで、再起動後も反映される。

[root ~]# firewall-cmd --add-port=22222/tcp --zone=public --permanent
success
[root ~]# firewall-cmd --list-all

ports: 22222/tcp

[root ~]# firewall-cmd --reload
success
②ポート番号変更、パスワードログイン禁止

最後に、開放したポート番号でSSH接続ができるようにするとともに、パスワードによるログインを無効化する。

[root ~]# vi /etc/ssh/sshd_config

#Port 22
Port 22222

#PasswordAuthentication yes
PasswordAuthentication no

:wq
[root ~]# systemctl restart sshd

以上の設定により、指定したポート番号でのみSSH接続可能になる。また、rootでのログインはパスワード入力を必要とするため、不可能になる。

再度、先ほど作成した一般ユーザで公開鍵認証が可能か確認するとともに、rootユーザへの切り替えができるか確かめておきたい。

[kyohju ~]$ su
Password: <rootユーザのパスワード>
[root kyohju]#

ここまで確認できたら、公開鍵認証の設定は完了となる。おつかれさまでした。

参考にしたサイト

SELinuxの無効化 - Qiita
#概要1.SELinuxを一時的にオフにする方法2.SELinuxを永続的にオフにする方法#環境CentOS7#現在の状態確認方法状態一覧・enforcing ・・・ SELinuxは…
【さくらVPS CENTOS7】TERATERM で公開鍵/秘密鍵によるSSH接続を設定し WINSCPで権限を強めたSFTP接続を10分で実装する事で、サーバーへのログインを”安全”に、強い権限によりファイル操作を”簡単に”閲覧する方法 - Qiita
#0前準備teratermで最初にIDとパスワードを入力してサーバにログインしてください。#1TERATERM上でSSH鍵生成します。「設定」をクリック後、「SSH鍵生成」を選択します。#2…
CentOS8 + Apache + Nginx + MariaDBでVPSサーバーに環境構築をする(#2:SSH・公開鍵認証の設定) | 大阪市天王寺区ホームページ制作 | 合同会社デザインサプライ-DesignSupply. LLC-
前回記事「CentOS8 + Apache + Nginx + MariaDBでVP
タイトルとURLをコピーしました