====== ssh サーバーの設定 ====== ===== 基本設定 ===== ==== sshログインメッセージの設定 ==== $ sudo vi /etc/motd Tomoyan.net. Server 1号機 ==== ssh サーバーの設定 ==== 以下のファイルの内容を編集する。 $ sudo vi /etc/ssh/sshd_config ==== 標準設定の port 22 の変更 ==== #Port 22 Port 22022 ==== root ユーザーのログインを禁止 ==== #PermitRootLogin yes PermitRootLogin no ==== パスワードではなく鍵によるログインに変更 ==== #PasswordAuthentication yes PasswordAuthentication no ==== 設定の反映 ==== sshd サービスを再起動する。 === CentOS 6 === $ sudo service sshd restart sshd を停止中: [ OK ] sshd を起動中: [ OK ] === Fedora / CentOS 7 === $ sudo systemctl restart sshd ==== ファイヤーウォール設定 ==== === CentOS 6 === 定義を追記する。 $ sudo vi /etc/sysconfig/iptables -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22022 -j ACCEPT === Fedora / CentOS 7 === 許可されているサービスの確認。 $ sudo firewall-cmd --list-services mdns dhcpv6-client ssh ssh の許可を永続的に削除 $ sudo firewall-cmd --permanent --remove-service=ssh 代わりにポート 22022 を永続的に許可。 $ sudo firewall-cmd --permanent --add-port=22022/tcp firewalld の状態を失わずにリロード。 $ sudo firewall-cmd --reload \\ 許可されているサービスの確認。 $ sudo firewall-cmd --list-services mdns dhcpv6-client 許可されているポートの確認。 $ sudo firewall-cmd --list-ports 22022/tcp ==== sudo の後もエージェントフォワードを引き継ぐ方法 ==== $ sudo visudo # # Adding HOME to env_keep may enable a user to run unrestricted # commands via sudo. # # Defaults env_keep += "HOME" Defaults env_keep += "SSH_AUTH_SOCK" ==== SSH chroot の設定 ==== === ユーザー作成 === $ sudo useradd [username] === SSHユーザーのルートディレクトリを作成 === $ sudo mkdir -p /var/ssh_root/[username] === SSH公開キーの設定 === ※SSHサーバーが公開鍵認証に設定されていることを前提とします。 - SSHの設定を保存するディレクトリを作成。 $ sudo mkdir /home/[username]/.ssh - SSHユーザーがオーナーになるように設定。 $ sudo chown [username].[username] /home/[username]/.ssh - オーナーのみアクセスを許可するようにパーミッションを設定。 $ sudo chmod 700 /home/[username]/.ssh - 認証を許可するユーザーの公開鍵(OpenSSH形式)を登録。 $ sudo vi /home/[username]/.ssh/authorized_keys ssh-rsa AAAAB... - 公開鍵のオーナー/パーミッションを設定。(これを適切に行わないとssh/sftpの認証エラーが発生する。) $ sudo chown [username].[username] /home/[username]/.ssh/authorized_keys $ sudo chmod 600 /home/[username]/.ssh/authorized_keys === sshdの設定 === - sshd設定ファイルを編集。 $ sudo vi /etc/ssh/sshd_config - sftp-server をコメントアウトして internal-sftp を利用するように変更。 # override default of no subsystems #Subsystem sftp /usr/libexec/openssh/sftp-server Subsystem sftp internal-sftp - ユーザー毎のchroot設定を追加。 Match User [username] ChrootDirectory /var/ssh_root/[username] X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp === sshdの設定を反映 === == Fedora == $ sudo systemctl reload sshd.service == CentOS == $ sudo service sshd reload ===== トラブルシューティング ===== ==== secure ログに subsystem request for sftp failed, subsystem not found が記録される ===== sshd_config に internal-sftp の設定漏れ。 # override default of no subsystems #Subsystem sftp /usr/libexec/openssh/sftp-server Subsystem sftp internal-sftp ===== 参考文献 ===== [[https://blue-red.ddo.jp/~ao/wiki/wiki.cgi?page=ssh+%A4%C7+chroot|ssh で chroot - ふなWiki]]\\