====== 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]]\\