SSH (Secure Shell) は、Linux サーバーにリモートでアクセスして管理するために使用される安全なプロトコルです。暗号化された通信を提供し、クライアントとサーバー間で転送されるデータのセキュリティを確保します。SSH は、システム管理者と開発者にとって基本的なツールであり、安全でないネットワーク上でコマンドの実行、ファイルの転送、ネットワーク サービスの安全な管理など、さまざまなタスクを実行できます。
Rocky Linux 9 または 8 で SSH を設定するには、デフォルトのリポジトリを使用して簡単なインストール プロセスに従うことができます。このガイドでは、インストール手順を説明し、セキュリティと使いやすさを向上させるための初期構成のヒントを提供します。
SSH インストール前に Rocky Linux を更新する
Rocky Linux に SSH をインストールして設定する前に、システムのパッケージが最新であることを確認することが重要です。これにより、操作がスムーズになるだけでなく、ソフトウェアの競合の可能性も最小限に抑えられます。
Rocky Linux システムを更新するには、次のコマンドを使用します。
sudo dnf upgrade --refresh
DNFコマンドでSSHをインストールする
次のステップでは、OpenSSH サーバーが Rocky Linux システムにすでに存在しているかどうかを確認します。これは、次のコマンドを実行して確認できます。
rpm -qa | grep openssh-server
このコマンドは、OpenSSH サーバーがインストールされている場合、関連する出力を返します。出力がない場合は、システムに OpenSSH サーバーが存在しないことを示します。この問題を解決して OpenSSH サーバーをインストールするには、次のコマンドを使用します。
sudo dnf install openssh-server
SSH (SSHD) サービスを有効にする
OpenSSH サーバーを正常にインストールしたら、systemd フレームワーク内で SSHD サービスを有効にすることが必須です。これにより、システムの再起動ごとに SSH デーモンが自動的に初期化されるようになります。これを実現するには、次のコマンドを実行します。
sudo systemctl enable sshd
SSHD サービスが自動起動に設定されたので、次のコマンドを使用して SSH サーバーを手動で起動できます。
sudo systemctl start sshd
検証の目的で、SSH サーバーが問題なく実行されていることを確認するには、次のコマンドでステータスを確認できます。
sudo systemctl status sshd
デフォルト ポート (22) が SSH 接続の着信をアクティブにリッスンしていることを確認するには、次のコマンドを実行します。
sudo ss -lt
Rocky Linux 9 または 8 で SSH 経由でリモート サーバーに接続する
Rocky Linux システムで SSH を適切に設定すると、リモート サーバーへの接続を確立できるようになります。さまざまな接続シナリオで SSH を活用する方法の詳細は次のとおりです。
Rocky Linux で SSH によるパスワード認証を使用して接続する
パスワードベースの認証を使用して SSH を使用してリモート サーバーへの接続を確立するには、次のコマンドを使用します。
ssh username@remote_server
ここで、「username」を実際のユーザー名に、「remote_server」を目的のリモート サーバーの IP アドレスまたはホスト名に置き換えます。実行すると、認証のためにパスワードを入力するよう求められます。
SSH による公開鍵認証を使用した接続
SSH は、より安全な接続方法を好む人のために公開鍵認証を提供します。この方法を使用して接続するには、コマンドは次のようになります。
ssh -i /path/to/private_key username@remote_server
このコマンドでは、「/path/to/private_key」を秘密鍵ファイルへのパスに置き換えます。同様に、「username」をユーザー名に、「remote_server」をリモート サーバーの IP アドレスまたはホスト名に置き換えます。この方法ではパスワード入力の必要がなくなり、代わりに提供された秘密鍵を使用して認証が行われます。
SSH 接続用の代替ポートの指定
SSH はデフォルトでポート 22 に接続しますが、一部のリモート サーバーは異なるポートで動作する場合があります。接続中に別のポートを指定するには、次を使用します。
ssh -p 2222 username@remote_server
この例では、「2222」をリモート サーバーが使用するポート番号に置き換えます。
SSH を使用した SCP による安全なファイル転送
SCP (Secure Copy) は、SSH 経由でシステム間でファイルを安全に転送する強力なコマンドライン ユーティリティです。ローカルの Rocky Linux システムからリモート サーバーにファイルを転送するには、次のコマンドを使用します。
scp /path/to/local/file username@remote_server:/path/to/remote/directory
「/path/to/local/file」を転送するファイル パスに置き換えます。同様に、「username」をユーザー名に、「remote_server」をリモート サーバーの IP アドレスまたはホスト名に、「/path/to/remote/directory」を転送したファイルを配置するリモート サーバー上のディレクトリ パスに調整します。
Rocky Linux で SSH を設定する
SSH 構成を最適化すると、サーバーのセキュリティとパフォーマンスが向上します。/etc/ssh/sshd_config にある SSH 構成ファイルには、特定のニーズに合わせて調整できるさまざまなパラメータが含まれています。次の構成は単なる例ですが、サーバーまたはデスクトップの設定によっては役立つ場合があります。
SSH の GSSAPI 認証を無効にする
GSSAPI 認証は便利ですが、SSH 接続の確立中に遅延が発生する場合があります。これを軽減するには、SSH 構成ファイルに次の行を追加して無効にします。
GSSAPIAuthentication no
SSH の SSH セッション タイムアウトの変更
セッション タイムアウトを調整すると、非アクティブな SSH セッションの管理に役立ちます。サーバーが 5 分ごとにキープアライブ メッセージを送信し、2 つのメッセージが連続して応答されない場合にセッションを終了するように設定するには、以下を追加します。
ClientAliveInterval 300
ClientAliveCountMax 2
SSH のルートログインを禁止する
特にブルートフォース攻撃に対するセキュリティを強化するには、ルート ログインを無効にすることをお勧めします。これは、次の方法で実現できます。
PermitRootLogin no
SSH の公開鍵認証の実装
公開鍵認証は、パスワードベースの方法よりも安全な代替手段を提供します。これを設定するには、まず新しい SSH キー ペアを生成する必要があります。
ssh-keygen -t rsa -b 4096
次に、公開キーを目的のリモート サーバーに転送します。
ssh-copy-id user@remote_server
「user」をユーザー名に、「remote_server」を適切な IP アドレスまたはホスト名に置き換えてください。最後に、SSH 構成で公開キー認証を有効にします。
PubkeyAuthentication yes
SSHのSSHアクセスを制限する
セキュリティを強化するために、特定のユーザーまたはグループへの SSH アクセスを制限できます。これを実装するには、以下を追加します。
AllowUsers user1 user2
AllowGroups group1 group2
プレースホルダーを、アクセスを許可する実際のユーザー名またはグループ名に置き換えます。
SSHのSSHポートの変更
SSH は、デフォルトではポート 22 で動作します。このポートは悪名高いため、このポートを変更すると不正アクセスの試みを阻止できます。新しいポートを割り当てるには、次のコマンドを使用します。
Port <port_number>
他のサービスによって使用されていない 1024 ~ 65535 のポート番号を選択することをお勧めします。
Firewalld による SSH のセキュリティ保護
VPS またはリモート サーバー環境で作業する場合、中断のないアクセスを確保します。Firewalld に変更を加える前に、特にシステムにリモートでアクセスしている場合は、IP アドレスをホワイトリストに登録する必要があります。そうしないと、ファイアウォールの変更を適用した後に、誤ってサーバーにアクセスできなくなる可能性があります。
Firewalld で IP アドレスをホワイトリストに登録するには、次のコマンドを使用します。
sudo firewall-cmd --permanent --add-source=<your_ip_address>
交換する実際の IP アドレスを入力します。
IP アドレスがホワイトリストに登録されると、SSH サービスを Firewalld に安全に組み込むことができます。
sudo firewall-cmd --add-service=ssh --permanent
必要な調整を行った後、新しい Firewalld 設定を適用します。
sudo firewall-cmd --reload
Firewalld に SSH サービスが含まれていることを確認するには、次のコマンドを実行します。
sudo firewall-cmd --list-services | grep ssh
このコマンドは、SSH サービスがファイアウォール経由で適切に許可されているかどうかを確認し、リモート接続が安全かつアクセス可能であることを保証します。
結論
Rocky Linux システムに SSH が正常にインストールされ、構成されていると、サーバーをリモートで安全に管理できます。SSH 構成を定期的に更新し、セキュリティを維持するためのベスト プラクティスを適用してください。初期セットアップのヒントに従うことで、より安全で効率的なリモート管理エクスペリエンスが保証されます。安全なサーバー管理のために SSH が提供する強力な機能を活用してください。