搭建FTP
安裝vsftpd服務(wù)
yum install -y vsftpd
編輯配置文件
vim /etc/vsftpd/vsftpd.conf
#配置文件如下
#是否允許匿名用戶
anonymous_enable=NO
#是否允許本地ftp登陸
local_enable=YES
#是否允許ftp用戶登陸后執(zhí)行寫操作
write_enable=YES
#文件被創(chuàng)建時的權(quán)限
local_umask=022
#是否顯示路徑信息
dirmessage_enable=YES
#
xferlog_enable=YES
#
connect_from_port_20=YES
#
xferlog_std_format=YES
#設(shè)置vsftpd服務(wù)器是否以standalone模式運(yùn)行,該值必須設(shè)置為yes
listen=YES
pam_service_name=vsftpd
#/etc/vsftpd/user_list文件是否啟用生效
userlist_enable=YES
#/etc/vsftpd/user_list文件中的用戶是否允許訪問還是不允許訪問,設(shè)置為yes,則該文件里面的用戶不可訪問,設(shè)置為no,則只有該文件里面的用戶可以訪問
userlist_deny=NO
#是否與tcp_wrapper結(jié)合來判斷用戶的登陸許可,會去檢查/etc/hosts.allow和/etc/hosts.deny
tcp_wrappers=YES
#端口
listen_port=2121
#開啟被動模式
pasv_enable=YES
#被動模式最小端口
pasv_min_port=30000
#動模式最大端口
pasv_max_port=31000
修改/etc/vsftpd/user_list
由于上一步conf文件的設(shè)置(userlist_deny=NO)垫桂,只有出現(xiàn)在這個文件里面的用戶才能使用ftp登陸
新建一個dsj_ftp用戶洽蛀,并寫入這個文件
關(guān)閉selinux
(否則會報500 OOPS: cannot change directory錯誤)
sed -i 's/enforcing/disabled/g' /etc/sysconfig/selinux
setenforce 0
設(shè)置之后用getenforce看一下忍坷,有時候設(shè)置之后狱杰,getenforce仍然是Enforcing,需要看到狀態(tài)是Permissive才行
配置防火墻
#防火墻開啟連接端口(我這里是2121)叔营,以及被動連接的范圍端口(30000-31000)
iptables -I INPUT -p tcp --dport 2121 -j ACCEPT
iptables -I INPUT -p tcp --dport 30000:31000 -j ACCEPT
#保存防火墻勺三,重啟防火墻囤采,重啟vsftpd
service iptables save
service iptables restart
service vsftpd restart
客戶端FZ連接測試通過!
報錯一
553報錯
1.檢查selinux寺惫,確認(rèn)已經(jīng)關(guān)閉
2.確認(rèn)配置文件中write_enable=YES
3.確認(rèn)該路徑下可寫
(執(zhí)行了一個cp成功疹吃,證明可寫)
4.確認(rèn)用戶的屬組和屬主擁有ftp相關(guān)權(quán)限
這里因為新掛了一個磁盤到/home目錄下,因此將原有的目錄干掉了西雀,新建之后路徑屬組和屬主為root萨驶,而在配置文件里面root是被我禁止了的,所以導(dǎo)致553報錯艇肴!
修改路徑屬組/主之后腔呜,上傳文件成功
報錯二
通過FZ上傳一個比較大的tar包(innobackup的RDS全庫備份)到服務(wù)器上,解壓失敗
后來發(fā)現(xiàn)是傳輸類型的原因
將原來的傳輸類型二進(jìn)制換成ASCⅡ碼后解決該問題
搭建SFTP
SFTP基于sshd服務(wù)
1.創(chuàng)建用戶組(sftp)
groupadd sftp
2.創(chuàng)建用戶(test)
#需要設(shè)置該用戶不可登錄再悼,同時修改該用戶的默認(rèn)/home目錄
useradd test -d /data/sftp/test -s /sbin/nologin -G sftp
#修改用戶密碼
passwd test
3.修改路徑權(quán)限
#到sftp這個層級歸屬root核畴,sftp下面的各賬戶的私有路徑則歸屬各私有賬戶
chown root.root?/data/sftp
chown -R test?/data/sftp/test?
chmod -R 700?/data/sftp/test?
4.修改/etc/ssh/sshd_config
#在末尾段加入
Subsystem sftp internal-sftp
#匹配sftp組
Match Group sftp
#root指定到sftp這一層
ChrootDirectory /data/sftp?
ForceCommand? ? internal-sftp
AllowTcpForwarding no
X11Forwarding no
5.重啟sshd服務(wù)即可,sftp走的是sshd的端口
報錯一
“Directive 'UseDNS' is not allowed within a Match block”
上面的第4點需要加到sshd_config的文末冲九,切勿加到下面這一段的前面谤草,否則會出現(xiàn)DNS的報錯
UseDNS no?
AddressFamily inet
PermitRootLogin yes
SyslogFacility AUTHPRIVPassword
Authentication yes
報錯二
登錄sftp之后無法上傳下載
需要檢查第3步設(shè)置的路徑權(quán)限問題(chown -R test?/data/sftp/test?)
報錯三
設(shè)置了路徑權(quán)限之后無法登陸
sshd_config中的 “ChrootDirectory /data/sftp” 設(shè)置到了私人路徑層級(/data/sftp/test)有可能導(dǎo)致登錄失敗?
非默認(rèn)端口的連接
#-oPort
sftp -oPort=60001 root@192.168.0.254