bsdftpd-ssl 的設定

要從紐約的主機上面拉檔案回台灣,發現 SFTP 速度只有 20KB/sec,這是因為目前 SSH 實做的方式對 latency 很敏感,在「High Performance SSH/SCP - HPN-SSH」這篇有提到相關的問題以及針對 OpenSSH 的 patch。不過,我想要用 freebsd-update 維護系統的 security update,所以我不想動到系統內的 OpenSSH。

另外一個想法是透過 FTPS 抓檔案,有不少 server software 都有支援 FTPS。在找 bsdftpd-ssl 的資料時找到以前寫的「在 FreeBSD 上支援 SSL 的 ftpd」這篇,結果發現這篇文章是因為當初 bsdftpd-ssl 在 FreeBSD 上無法編譯而改用 ftpd-tls 所寫的。現在這個問題已經解決了,但找不到之前用 bsdftpd-ssl 所設的設定可以抄,只好再 man ftpd-ssl 看一次參數。

除了先到 portsftp/bsdftpd-ssl 目錄下安裝外,還需要產生 self-signed certification。產生的步驟可以參考「OpenSSL Command-Line HOWTO」這篇的「How do I generate a self-signed certificate?」這個部份。把 certification 輸出到 /etc/ssl/certs/ftpd.pem (如果目錄不存在則建立一個),並把檔案權限改成 600 或是 400。

再來是設定 /etc/rc.conf.local (bsdftpd-ssl 不屬於 system 內建軟體,所以放到 local),增加兩行:

bsdftpd_ssl_enable="YES"
bsdftpd_ssl_flags="-D -h -l -p /var/run/ftpd.pid -z secure"

然後用 /usr/local/etc/rc.d/bsdftpd-ssl start 跑起來就可以了。測試時要注意 active 與 passive 以及防火牆的設定,在 debug 時除了錯誤訊息外,可以用 sockstat | grep ftpd 以及 tcpdump 觀察。

實際抓一個 500MB 的檔案,到最後面可以跑到 295KB/sec,比起 SFTP 快上不少。

Leave a Reply

Your email address will not be published. Required fields are marked *