RHEL8の環境整備(SSH接続設定)

ソフトウェア
CoxinhaFotosによるPixabayからの画像

前回、初期設定まで漕ぎつけたRHEL8ですが、検証用とは言え一応サーバなので、それらしく「SSH」によるセキュアなリモート接続環境を整備しました。

OpenSSHの接続設定

OpenSSH は、Linux、UNIX系のオペレーティングシステムで、サポートされているSSHプロトコルです。RHEL8にも、デフォルトでOpenSSHパッケージが入っているので、これを利用しました。

OpenSSHの設定について

OpenSSHの現状を確認し、検証機として使いやすいよう以下3項目を、一般的な事例に倣って設定しました。それ以外はデフォルト設定のまま運用する事にします。

  • Port22をSSHポートとする → デフォルト設定のまま使用する
  • PermitRootLogin yes:検証機としていろいろ便利なので「root」ログインを許可する
  • PasswordAuthentication yes:サーバログインの手段として、パスワード認証によるSSH接続を許可する

OpenSSHの現状確認と設定変更

仮想環境のRHEL8を起動します。デスクトップが表示されたら、左上の「アクティビティ」をクリック  → サイドバーから「ターミナル」(図1赤枠)アイコンをクリックして「端末」(図1黄枠)を起動します。

図1:デスクトップ左上の「アクティビティ」クリック→サイドバーから「ターミナル」アイコンをクリックして「端末」を起動

「端末」が開いたら「su」して管理者権限を取得します。OpenSSH の設定ファイル「/etc/ssh/sshd_config」を開き、対象パラメータの設定を確認します。長いファイルなので、パイプ(|)にgrepコマンドを連結して、対象パラメータ名で検索して確認しました(図2黄枠①~③)。

実行コマンド(図2黄枠①):less /etc/ssh/sshd_config | grep Port ※黄枠②③も同様の書式
図2:OpenSSH設定ファイル(/etc/ssh/sshd_config)を開き、対象パラメータの設定を確認

対象パラメータ(図2赤枠①~③)の内、Port 22の設定がコメントアウトされ、他のパラメータは期待値が設定されていた為、Port 22の設定(図2赤枠①)を追記しました(図3黄枠)。※もちろんPort 22は、SSHのデフォルトなので、特に設定しなくても22番ポートが割り当てられますが、今回は学習の為、あえて設定を追記しました。

図3:OpenSSH設定ファイル(/etc/ssh/sshd_config)に「Port 22」を追記

OpenSSH設定変更の適用とデーモン実行の確認

OpenSSHは「sshd」デーモン(主にバックグラウンドで動作するプロセス)として動作するので「sshd」が今のプロセスにある(図4黄枠)事を確認します(図4赤枠)。

実行コマンド(図4黄枠):ps ax | grep sshd
図4:今のプロセスに「sshd」がある事を確認

「sshd」を再起動して設定ファイル(/etc/ssh/sshd_config)の変更を適用します(図5黄枠①)。

実行コマンド(図5黄枠①):systemctl restart sshd

次に「sshd」のステータスを表示し(図5黄枠②)設定が読込まれてアクティブ状態である事、設定通り22番ポートが割り当てられている事を確認します(図5赤枠)。

実行コマンド(図5黄枠②):systemctl status sshd
図5:「sshd」を再起動して設定ファイル(/etc/ssh/sshd_config)の変更を適用後、ステータスを確認

ファイアウォールの状況確認

RHEL8ではデフォルトで「firewalld」と言うファイアウォールが動作しています。まず「firewalld」のデフォルトゾーンに妥当なゾーンが設定されている事を確認します。次にデフォルトゾーンでSSH接続が許可されているか確認します。もし、デフォルト設定が流用できない場合は、検証機として外部接続できるよう変更します。

デフォルトゾーンの確認

「firewalld」では「ゾーン」と言う、アクセス先との通信インターフェイスの性質が似通っているものをひとまとめにして、アクセス制御を行う方式が採用されています(ゾーンベースポリシーモデルと言うらしい)。本来は「ゾーン」の設定も行うのが筋ですが、自分には難しいのでデフォルトゾーンに、「trusted(全通信を許可する)」以外が設定されている(図6黄赤枠)事の確認にとどめました。

実行コマンド(図6黄枠):firewall-cmd --get-default-zone
図6:デフォルトゾーンに、「trusted(全通信を許可する)」以外が設定されている事を確認

※補足:インストール時「ゾーン」には、事前に用意された9種類から、何れかのデフォルトゾーンが設定されます。「firewalld」のデフォルトゾーンは「public」です。

SSH接続の許可状況を確認

デフォルトゾーンで「SSH接続」が許可されている事を確認します(図7黄赤枠)。確認コマンド (図7黄枠)で展開されるリストの「services:」項目に「ssh」と記載がある事(図7赤枠)を確認します。

実行コマンド(図7黄枠): firewall-cmd --list-all
図7:デフォルトゾーンで「SSH接続」が許可されている事を確認する。リストの「services:」項目に「ssh」と記載がある事

※補足:ゾーン「public」には「SSH接続」がデフォルトで許可されています。

もし、デフォルトゾーンに「SSH接続」が許可されていない場合(図8黄赤枠①)は、以下のコマンドを実行して「services:」項目に「ssh」を追記します(図8黄枠②)。

実行コマンド(図8黄枠②) : firewall-cmd --permanent --add-service=ssh

設定を変更したので、ファイアウォール設定の再読込みを行います(図8黄枠③)。

実行コマンド(図8黄枠③) : firewall-cmd --reload

デフォルトゾーンで「SSH接続」が許可されている事を確認します(図8黄赤枠④)。

8図:デフォルトゾーンに「SSH接続」が許可されていない場合、「SSH接続」の許可設定を行う

仮想端末(RHEL8)のIPアドレスを確認する

外部(SSHクライアント)から接続の為、仮想端末(RHEL8)のIPアドレスを確認します(図9黄赤枠)。※もちろん、前回インストール時に設定したIPアドレスが表示されます。

実行コマンド(図9黄枠):ifconfig
図9:仮想端末のIPアドレスを確認

SSHクライアント(TeraTarm)からの接続

SSHクライアント(TeraTarm)を使って、外部から仮想端末(RHEL8)にSSH接続します。

TeraTarmから仮想端末(RHEL8)に接続

TeraTarmを起動し、図10の接続設定ポップアップが表示されたら、前述で確認した仮想端末(RHEL8)のIPアドレスを入力し、その他の設定については、図10赤枠の通りである事を確認し「OK」を押下します。

図10:TeraTarmの接続設定ポップアップの確認項目

初回接続時は、セキュリティ警告が出るので「このホストをknown hostリストに追加する」にチェックが入っている事を確認し「OK」を押下すれば(図11赤枠)、次回から表示されなくなります。

図11:初回接続時は、セキュリティ警告ポップアップが表示される

SSH認証ポップアップが表示されたら、ここ迄のSSH接続設定の経緯から、今回はユーザ名、パスフレーズに、前回インストール時に作成した管理者ユーザのユーザ名、パスワードを入力(図12赤枠)し、他の設定はデフォルトのまま「OK」を押下します(図12)。

図12:SSH認証ポップアップが出たら

以下図13のようなターミナル表示になったら、正常にSSH接続できています。

図13:TeraTarmから仮想端末へSSH接続成功時のターミナル表示

仮想端末(RHEL8)に自動接続する「ttl」ファイルの作成

正常にSSH接続が確立したので、日々のメンテナンス用に仮想端末(RHEL8)に自動接続する「ttl」ファイルを作成します。「ttl」ファイル作成の詳細については、以前の掲載記事をご覧ください。

マシン名指定で接続できるよう、以前の設定例に倣って「hosts」ファイルに仮想端末(RHEL8)のIPとマシン名の紐づけ設定を追記します(図14赤枠)。

図14:「hosts」ファイルに仮想端末(RHEL8)のIPとマシン名の紐づけ設定を追記

「ttl」ファイルは、業務でよく使う接続の構成に倣って、管理者ユーザで仮想端末(RHEL8)にログイン後、管理者権限に移行するSSH接続(図15黄枠)と、以下の通り「root」で直接ログインするSSH接続(図15赤枠)の、2パターンを作成しました。※「root」で直接ログインするのは、大概のLinuxサーバの運用ルール上で、規約違反になると思われます。が、ここでは「root」ログインを許可する(PermitRootLogin yes)設定の確認も兼ねて作成しました。

ssh2_root_login_redhat01.ttl
;=======================================================
; 接続情報:接続先ホスト名/ユーザ名/パスワード
HOSTNAME = 'redhat01'
USERNAME = 'root'
PASSWD = 'everyone'

;暗号化ファイルパス
PASSFILE = '\\NASNE-57E8BC\share2\pw_file\passwd.dat'
;=======================================================

;暗号化ファイルを参照し、パスワード取得
getpassword PASSFILE USERNAME PASSWD

;接続コマンド組立て
COMMAND = HOSTNAME
strconcat COMMAND ':22 /ssh /2 /auth=password /user='
strconcat COMMAND USERNAME
strconcat COMMAND ' /passwd='
strconcat COMMAND PASSWD

;接続
connect COMMAND

;Wait時のタイムアウト設定(5秒待つ)
timeout=5

;ログイン時のオプション処理
;特になし

;マクロ終了
end

作成した仮想端末(RHEL8)に自動でSSH接続する2パターンの「ttl」ファイル(図15)。「root」で直接ログインする接続する「ttl」ファイル(図15赤枠)をダブルクリックし、仮想端末(RHEL8)に「root」ログインが許可されているか、確認します。

図15:作成した仮想端末(RHEL8)に自動でSSH接続する「ttl」ファイル

無事に「root」ログインできました(図16赤枠)。

参考資料

コメント

タイトルとURLをコピーしました