このガイドでは、CentOS Stream 9でSSHサーバーを設定する方法について詳しく説明します。パスワード認証からSSH鍵認証、ファイル転送、ポートフォワーディング、並列SSHの使用まで、各種のSSH機能を網羅しています。
1. パスワード認証の設定
SSHサーバーでは、デフォルトでパスワード認証が有効になっています。パスワード認証を確認または有効化するには、sshd_config
ファイルを編集します。
# SSH設定ファイルを編集 sudo vi /etc/ssh/sshd_config # パスワード認証を有効化 PasswordAuthentication yes
設定を変更した後、SSHサービスを再起動します。
# SSHサービスの再起動 sudo systemctl restart sshd
2. CentOSでのSSHファイル転送
SSHを使って、CentOS間でファイルを転送するにはscp
コマンドを使用します。scp
は、SSHプロトコルを使用して安全にファイルを転送します。
# ローカルからリモートにファイルを転送 scp /path/to/local/file user@remote_host:/path/to/remote/directory # リモートからローカルにファイルを転送 scp user@remote_host:/path/to/remote/file /path/to/local/directory
3. WindowsでのSSHファイル転送
Windowsでは、WinSCP
などのツールを使用してSSH経由でファイルを転送できます。WinSCPを使うと、グラフィカルなインターフェースで簡単にファイル転送が可能です。
以下のリンクからWinSCPをダウンロードし、インストールします: WinSCP公式サイト
4. SSH鍵ペア認証の設定
SSHキーを使用したパスワードレス認証は、より安全な方法です。まず、ssh-keygen
コマンドで鍵ペアを作成します。
# SSH鍵ペアの作成 ssh-keygen -t rsa # 公開鍵をリモートサーバーにコピー ssh-copy-id user@remote_host
これにより、次回からはパスワードを入力せずにSSH接続が可能になります。
5. SFTPのみ + Chrootの設定
特定のユーザーをSFTPのみのアクセスに制限し、Chrootを使ってファイルシステムの一部を隔離する設定です。まず、sshd_config
を編集します。
# SSH設定ファイルを編集 sudo vi /etc/ssh/sshd_config # 以下の設定を追加 Subsystem sftp internal-sftp Match User sftpuser ChrootDirectory /home/sftpuser ForceCommand internal-sftp AllowTcpForwarding no
この設定を反映させるため、SSHサービスを再起動します。
6. SSH-Agentの使用
ssh-agent
は、SSHセッション間で秘密鍵をキャッシュし、毎回パスフレーズを入力する必要をなくすために使用します。
# SSHエージェントを起動 eval $(ssh-agent) # SSH鍵をエージェントに追加 ssh-add ~/.ssh/id_rsa
7. SSHPassの使用
sshpass
を使用すると、スクリプト内でパスワード認証が必要な場合に自動化できます。以下のコマンドでsshpass
をインストールします。
# sshpassのインストール sudo dnf install sshpass -y # sshpassを使ってSSH接続 sshpass -p 'your_password' ssh user@remote_host
8. SSHFSの使用
sshfs
を使うと、リモートサーバーのディレクトリをローカルファイルシステムにマウントできます。
# sshfsのインストール sudo dnf install sshfs -y # リモートディレクトリをローカルにマウント sshfs user@remote_host:/remote/directory /local/mountpoint
9. ポートフォワーディングの使用
SSHを使用してポートフォワーディングを行い、ローカルホストからリモートサービスにアクセスします。
# ローカルフォワーディング ssh -L local_port:remote_host:remote_port user@remote_host # リモートフォワーディング ssh -R remote_port:localhost:local_port user@remote_host
10. Parallel SSHの使用
pssh
を使うと、複数のリモートホストに対して並列にコマンドを実行できます。
# psshのインストール sudo dnf install pssh -y # 複数ホストに対してコマンドを実行 pssh -h hosts.txt -l user -A -i "uptime"
このコマンドは、指定された複数のホストに対して同時にuptime
コマンドを実行します。