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
数・サイズ・タイミング・形式はログの状況によって調整します。