在幸狐RV1106板子上用gcc14.2本地编译安装ssh客户端/服务器、vim编辑器、sl和vsftpd服务器
【编译安装openssh-10.0p1】
wget https://repo.jing.rocks/pub/OpenBSD/OpenSSH/portable/openssh-10.0p1.tar.gz --no-check-certificate
tar xf openssh-10.0p1.tar.gz
cd openssh-10.0p1
./configure --with-sandbox=no
(必须添加--with-sandbox=no选项,否则sshd-auth程序的kex_ecdh_enc函数里面只要调用openssl库的EC_KEY_generate_key函数就会崩溃,导致putty窗口一打开就闪退)
makeaddgroup -S sshd
adduser -G sshd -SDH sshd
(不添加sshd用户的话会报Privilege separation user sshd does not exist错误)
make install
cd ..
查看ssh版本号:ssh -V
查看sshd版本号:sshd -V
输出:OpenSSH_10.0p2, OpenSSL 1.1.1w 11 Sep 2023
事实上10.0p1和10.0p2是同一个版本。
板子连接电脑虚拟机:ssh oct1158@192.168.4.53
sshd服务器允许root用户登录:修改/usr/local/etc/sshd_config文件,#PermitRootLogin prohibit-password改成PermitRootLogin yes。
板子启动sshd服务器:/usr/local/sbin/sshd
关闭sshd服务器:killall sshd
开机自动启动sshd:修改/etc/init.d/rcS文件,在里面添加一句/usr/local/sbin/sshd。
有了sshd服务器,FileZilla就可以连接板子,通过sftp方式浏览、上传和下载板子里面的文件。
【编译安装vim-9.0】
cd ~/software
wget https://ftp.nluug.nl/pub/vim/unix/vim-9.0.tar.bz2 --no-check-certificate
tar xf vim-9.0.tar.bz2
cd vim90
./configure LIBS=-lncursesw
(LIBS=-lncursesw选项仅在板子上装了libncursesw.so但没装libncurses.so时指定)
make
make install
cd ..
客户端 连接方式 vim是否能对c文件代码着色
putty 串口 否
tera term 串口 否
windows telnet telnet 否
putty telnet 否
tera term telnet 否
putty ssh 是
tera term ssh 是
在ssh模式下,vim可以正常对c文件代码着色,putty和tera term两种ssh客户端都可以。
但是通过串口或者telnet连接板子,vim无法看到代码着色,所有文字都是白色。
【编译sl-5.02】
wget https://github.com/mtoyoda/sl/archive/refs/tags/5.02.tar.gz -O sl-5.02.tar.gz --no-check-certificate
tar xf sl-5.02.tar.gz
cd sl-5.02
修改Makefile文件,将里面的-lncurses改成-lncursesw。
make
cd ..
【编译安装vsftpd-3.0.5】
mkdir vsftpd
cd vsftpd
[编译安装libnsl-2.0.1]
wget https://github.com/thkukuk/libnsl/releases/download/v2.0.1/libnsl-2.0.1.tar.xz --no-check-certificate
tar xf libnsl-2.0.1.tar.xz
cd libnsl-2.0.1
./configure
make
make install
cd ..
[编译安装vsftpd-3.0.5]
wget https://security.appspot.com/downloads/vsftpd-3.0.5.tar.gz --no-check-certificate
tar xf vsftpd-3.0.5.tar.gz
cd vsftpd-3.0.5
make
make install
cd ../..
/usr/local/lib/gcc/arm-none-linux-gnueabihf/14.2.0/../../../../arm-none-linux-gnueabihf/bin/ld: sysdeputil.o: in function `vsf_sysdep_check_auth':
sysdeputil.c:(.text+0x9c): undefined reference to `crypt'
/usr/local/lib/gcc/arm-none-linux-gnueabihf/14.2.0/../../../../arm-none-linux-gnueabihf/bin/ld: sysdeputil.c:(.text+0xb0): undefined reference to `crypt'
collect2: error: ld returned 1 exit status
make: *** [Makefile:29: vsftpd] Error 1
解决办法:修改Makefile文件,第13行LDFLAGS末尾加上 -lcrypt。
创建ftp和nobody用户:
addgroup -S ftp
adduser -G ftp -SD ftp
chmod u-w /home/ftp
addgroup -S nobody
adduser -G nobody -SDH nobody
注意ftp用户要创建/home/ftp目录,而nobody用户不用创建,所以adduser命令添加ftp用户时不带H选项。
/home/ftp是用于匿名用户登录的目录,该目录必须用chmod命令去掉写权限,否则会报500 OOPS: vsftpd: refusing to run with writable root inside chroot()错误。
创建secure_chroot_dir用的文件夹:
mkdir /usr/share/empty
先关闭busybox自带的ftp服务器:
[root@luckfox-rv1106 ~/software]# ps aux | grep ftpd
107 root 0:00 tcpsvd 0 21 ftpd -w /
3056 root 0:00 grep ftpd
[root@luckfox-rv1106 ~/software]# kill -9 107
[root@luckfox-rv1106 ~/software]#
再启动vsftpd服务器:/usr/local/sbin/vsftpd &
可以用telnet localhost 21命令看看有没有报错,进去后可用quit命令退出。
默认情况下只允许匿名登录。
关闭vsftpd服务器:killall vsftpd
复制配置文件到/etc文件夹:cp vsftpd.conf /etc
创建log文件夹:mkdir /var/log
修改/etc/vsftpd.conf文件,取消注释local_enable=YES、write_enable=YES和local_umask=022。
再次启动vsftpd服务器:/usr/local/sbin/vsftpd &
现在的匿名用户和所有的系统用户都可以登录ftp服务器了。
匿名用户的目录是/home/ftp,没有写权限。
root用户和其他用户都有写权限。
与busybox自带的ftp服务器相比,vsftpd服务器有以下不同:
(1)支持匿名。
(2)默认不显示以点开头的隐藏文件。
(3)在windows文件管理器中可正常创建中文文件夹。
开机自动启动vsftpd:修改/etc/init.d/rcS文件,把tcpsvd 0 21 ftpd -w / &改成/usr/local/sbin/vsftpd &。