目次
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