FreeBSD - メンテナンス・トラブルシュート - sshd・sftp - sftp
1. sftp 設定 少なくとも「FreeBSD 11.1 RELEASE」では、「sshd」を起動すれば、「sftp」は有効になっています。 /etc/ssh/sshd_config 内の Subsystem sftp /usr/libexec/sftp-server の記述が「sftp」を起動する設定です。 もし違うバージョン等でコメントアウトされていたら、コメントをはずすようにします。 編集したら service sshd restart で sshd デーモンを再起動します。 sftp のクライアントとして FFFTP を使用できます。使用方法については「FFFTP Bitvise SSH Client との連動」のページを参照してください。 2. 特定のユーザを鍵なし・chroot で接続する 特定のユーザを鍵なし・chroot で接続させるには、まず、chroot で接続するディレクトリの設定をします。 接続するディレクトリは所有者が root でかつ 755(drwxr-xr-x)より多い権限を与えてはならないようです。 所有者や権限に問題があると /var/log/auth.log に fatal: bad ownership or modes for chroot directory component "ディレクトリ名" というメッセージが出て接続エラーとなります。 今んとこ chroot したディレクトリの配下にサブディレクトリを作成して、そのサブディレクトリの所有者を接続するユーザにしています。 次に /etc/ssh/sshd_config の最下行に以下を記述します。 Match User ユーザ名 PasswordAuthentication yes ChrootDirectory /chroot用ディレクトリ ForceCommand internal-sftp これで、sshd を再起動すると「ユーザ名」に記述したユーザは、鍵認証なしで sftp 接続でき、chroot された状態になっています。 さらにつっこんだ設定もできるようなので参考になりそうなサイトをメモしておきます。 「chrootされたsftp専用ユーザを作るメモ」 3. ログを出力する sftp は基本的にログを出力しません。 ログを出力させるには /etc/ssh/sshd_config の Subsystem sftp /usr/libexec/sftp-server を編集します。 Subsystem sftp /usr/libexec/sftp-server -f LOCAL7 -l VERBOSE -f LOCAL7 で、ログの facility を 7 にしています。 -l VERBOSE で、いささか冗長気味のログを出力します。 記述したら、スペルチェック。 sshd -t syslogd が /var/log/sftp/sftp.log へ出力するように /etc/syslog.conf の末尾に以下を追加します。 # local7.* /var/log/sftp/sftp.log (/etc/syslog.d/sftp.conf を作成して記述すればよいかと思いましたがうまく動作しませんでした。) (newsyslog.conf の方は include がうまく機能しているのですが・・・ ) 設定を反映させるために、ディレクトリ・ファイルの作成とデーモンプログラムの再起動を行います。 mkdir -pv /var/log/sftp/ touch /var/log/sftp/sftp.log service syslogd restart service sshd restart ログローテーションを定義します。 /etc/newsyslog.conf.d/sftp.conf を作成して、下記のように記述します。 # logfilename [owner:group] mode count size when flags [/pid_file] [sig_num] /var/log/sftp/sftp.log 600 30 * @T00 B 数・サイズ・タイミング・形式はログの状況によって調整します。
/etc/ssh/sshd_config
Subsystem sftp /usr/libexec/sftp-server
service sshd restart
/var/log/auth.log
fatal: bad ownership or modes for chroot directory component "ディレクトリ名"
Match User ユーザ名 PasswordAuthentication yes ChrootDirectory /chroot用ディレクトリ ForceCommand internal-sftp
「chrootされたsftp専用ユーザを作るメモ」
Subsystem sftp /usr/libexec/sftp-server -f LOCAL7 -l VERBOSE
sshd -t
/etc/syslog.conf
# local7.* /var/log/sftp/sftp.log
mkdir -pv /var/log/sftp/ touch /var/log/sftp/sftp.log service syslogd restart service sshd restart
/etc/newsyslog.conf.d/sftp.conf
# logfilename [owner:group] mode count size when flags [/pid_file] [sig_num] /var/log/sftp/sftp.log 600 30 * @T00 B