2009 05 28 21 17 [howto] vsftpd support ssl

剛剛重新編譯了新版的vsftpd,

因為WL700ge上面的vsftpd太過老舊,

也並沒有完整 support UTF8,

似乎是 asus 的 RD 有更改過原始碼。

所以去下載最新的 vsftpd 來編譯,

編譯過程,比較麻煩的是要先有 openssl ,

所以還得先編譯 openssl ,

這個問題不多,

./Configure shared no-zlib no-asm linux-elf

剩下的,只需要把 gcc 改用 mipsel-linux-gcc 去編譯就可以了。

然後把編譯出來的 libcrypto.so 和 libssl.so 放到

 /opt/brcm/hndtools-mipsel-linux/mipsel-linux/lib 底下去,

當然 header files 則是放到

/opt/brcm/hndtools-mipsel-linux/mipsel-linux/include/openssl 下。

再來就可以編譯 vsftpd ,

先把 builddefs.h 裡面的

#undef VSF_BUILD_SSL

改成

#define VSF_BUILD_SSL

再來改 Makefile 裡的

GCC = gcc

改成

GCC = mipsel-linux-gcc

以及

LIBS    = `./vsf_findlibs.sh`

改成

LIBS    =  -lcrypt -ldl -lnsl -lresolv -lutil -lcrypto -lssl

剩下只需要 make 就可以了。

 

把 vsftpd 編譯好後,也放上WL700gE執行了。

當然有enable SSL。

但卻發生不知道應該用那個 ftp client 來連線。

使用 putty 的 psftp 來連線,

卻告訴我以下訊息,

[C:\]PSFTP.EXE 192.168.1.1
login as: xxx
xxx@192.168.1.1's password:
/opt/libexec/sftp-server: not found
Fatal: unable to initialise SFTP: could not connect

看到 /opt/libexec/sftp-server ,

還以為是 vsftpd 還需要其他的軟體來 support ,

找了老半天,都沒有發現到任何痕跡。

才用 UltraEdit 把 psftp.exe 打開來找找看

有沒有這字串 /opt/libexec/sftp-server ,

原來這串字真的是 psftp 丟出來的。

 

才在用自己常用的 Filezilla 來連線,

因為它有分伺服器種類 FTP/SFTP/FTPS/FTPES,

試了老幾次,

總算在最後一種的 FTPES 連線成功了。

原來 vsftpd support ssl 是所謂的 FTPES 啊~~~

 

附註:我所用的 hndtools-mipsel-linux 事實上是 hndtools-mipsel-linux-3.2.3

        印象中 hndtools-mipsel-linux-3.0 在編譯某些軟體似乎有問題。