FTP服務
軟件安裝包: vsftpd
默認發布目錄: /var/ftp
協議接口: 21/tcp
服務配置文件: /etc/vsftpd/vsftpd.conf
報錯id的解析:
500 ##文件系統權限過大
530 ##用戶認證失敗
550 ##服務本身功能未開放
553 ##文件權過小
FTP(File Transfer Protocol),是文件傳輸協議的簡稱。用于Inte.NET上的控制文件的雙向傳輸。同時,
它也是一個應用程序(Application),用戶可以通過它把自己的PC機與世界各地所有運行FTP協議的服務器相連,
訪問服務器上的大量程序和信息。
FTP的主要功能是實現各種操作系統之間的文件交流,建立一個統一的文件傳輸協議。
ftp:// ##文件傳輸協議
vsftpd ##FTP服務器包
安裝包
服務端: vsftd
客戶端: lftp
服務端部署ftp服務
yum install -y vsftpd
systemctl start vsftpd
systemctl enable vsftpd
添加防火墻策略
##添加防火墻策略,讓火墻允許ftp服務; --permanent表示永久添加
firewall-cmd --permanent --add-service=ftp
Success
##重新加載;必須執行,否則不生效
firewall-cmd --reload
success
firewall-cmd --list-all
關閉selinux
##查看selinux的狀態
getenforce Enforcing
vim /etc/sysconfig/selinux
SELINUX=disabled
reboot
客戶端部署
yum -y install lftp
連接命令:
lftp 172.25.254.234 -u chunyu
基本命令使用
##本地用戶登陸
[kIOSk@foundation34 ~]$ lftp 172.25.254.234 -u westos
Password:
lftp westos@172.25.254.234:~> ls
-rw-r--r-- 1 0 0 0 Oct 31 15:18 westosfile1
-rw-r--r-- 1 0 0 0 Oct 31 15:18 westosfile2
-rw-r--r-- 1 0 0 0 Oct 31 15:18 westosfile3
##上傳文件
lftp westos@172.25.254.234:~> put /etc/passwd
3190 bytes transferred
lftp westos@172.25.254.234:~> ls
-rw-r--r-- 1 1001 1001 3190 Oct 31 15:19 passwd
-rw-r--r-- 1 0 0 0 Oct 31 15:18 westosfile1
-rw-r--r-- 1 0 0 0 Oct 31 15:18 westosfile2
-rw-r--r-- 1 0 0 0 Oct 31 15:18 westosfile3
##刪除文件
lftp westos@172.25.254.234:~> rm passwd
rm ok, `passwd' removed
lftp westos@172.25.254.234:~> ls
-rw-r--r-- 1 0 0 0 Oct 31 15:18 westosfile1
-rw-r--r-- 1 0 0 0 Oct 31 15:18 westosfile2
-rw-r--r-- 1 0 0 0 Oct 31 15:18 westosfile3
##新建目錄
lftp westos@172.25.254.234:~> mkdir hello
mkdir ok, `hello' created
lftp westos@172.25.254.234:~> ls
drwxr-xr-x 2 1001 1001 6 Oct 31 15:20 hello
-rw-r--r-- 1 0 0 0 Oct 31 15:18 westosfile1
-rw-r--r-- 1 0 0 0 Oct 31 15:18 westosfile2
-rw-r--r-- 1 0 0 0 Oct 31 15:18 westosfile3
##但不能用使用touch命令 因為ftp服務界面并非支持所有shell中的所有命令
lftp westos@172.25.254.234:~> touch file
Unknown command `touch'.
lftp westos@172.25.254.234:~> exit
連接后使用命令錯誤提示
Fatal error: Certificate verification: Not trusted
解決辦法:
臨時解決
直接在lftp命令提示符下輸入:set ssl:verify-certificate no 回車
永久生效:
編輯/etc/lftp.conf,加入下面內容:
set ssl:verify-certificate no
SFTP服務
sftp是Secure File Transfer Protocol的縮寫,安全文件傳送協議。可以為傳輸文件提供一種安全的網絡的加密方法。SFTP 為 SSH的其中一部分,是一種傳輸檔案至 Blogger 伺服器的安全方式。其實在SSH軟件包中,已經包含了一個叫作SFTP(Secure File Transfer Protocol)的安全文件信息傳輸子系統,SFTP本身沒有單獨的守護進程,它必須使用sshd守護進程(端口號默認是22)來完成相應的連接和答復操作,所以從某種意義上來說,SFTP并不像一個服務器程序,而更像是一個客戶端程序。SFTP同樣是使用加密傳輸認證信息和傳輸的數據,所以,使用SFTP是非常安全的。但是,由于這種傳輸方式使用了加密/解密技術,所以傳輸效率比普通的FTP要低得多
本次使用系統自帶的internal-sftp搭建sftp,因為需要用到chroot,所以openssh 版本不能低于4.8p1
ssh -V檢查版本
要創建的sftp用戶和組
user: BigData1 BigData2
groups:sftpusers
創建組
groupadd sftpusers
創建用戶
useradd -g sftpusers -s /sbin/nologin BigData1
useradd -g sftpusers -s /sbin/nologin BigData2
修改密碼
passwd BigData1
passwd BigData2
創建目錄
mkdir -p home/Sftp/BigData2FTP
mkdir -p home/Sftp/BigData1FTP
修改屬主和屬主(該目錄為sftp用戶的home目錄,屬主必須為root,權限最高為755)
chown root:root BigData2FTP
chown root:root BigData1FTP
修改權限
chmod 755 /home/Sftp/BigData2FTP
chmod 755 /home/Sftp/BigData1FTP
創建文件傳輸目錄
mkdir /home/Sftp/BigData2FTP/BigData2
mkdir /home/Sftp/BigData1FTP/BigData1
更改權限(此目錄權限隨意)
chmod 777 /home/Sftp/BigData2FTP/BigData2
chmod 777 /home/Sftp/BigData2FTP/BigData1
修改home目錄
usermod -d /home/Sftp/BigData2FTP BigData2
usermod -d /home/Sftp/BigData1FTP/ BigData1
修改配置文件
vim /etc/ssh/sshd_config
注釋
#Subsystem sftp /usr/libexec/openssh/sftp-server
添加
Subsystem sftp internal-sftp
Match Group sftpusers
ChrootDirectory %p
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
重啟sshd服務
systemctl restart sshd.service
登陸測試
sftp BigData2@ip
sftp -oPort=8000 BigData1@172.31.50.111
參數說明:
Subsystem sftp internal-sftp:指定使用sftp服務使用系統自帶的internal-sftp
Match Group sftp:用來匹配sftp組的用戶,如果要匹配多個組,多個組之間用逗號分割。
注:當然也可以匹配用戶,如:【Match User mysftp】,多個用戶名
之間也是用逗號分割。
ChrootDirectory /sftp/%u:用chroot將用戶的根目錄指定到/sftp/%u,%u代表用戶名,這
樣用戶就只能在/sftp/%u下活動。
ForceCommand internal-sftp:指定sftp命令
更改工作目錄權限
chown root:sftp /sftp
chown root:sftp /sftp/tom
chmod 755 /sftp
chmod 755 /sftp/tom
權限說明:
目錄的權限設定有兩個要點:
1、由ChrootDirectory指定的目錄開始一直往上到系統根目錄為止的目錄擁有者,都只能是 root,群組可以是第一步創建的組,這里是sftp
2、由ChrootDirectory指定的目錄開始一直往上到系統根目錄為止,目錄所屬的群組都不可以 具有寫的權限。
注:讀(r,權限值為4)、寫(w,權限值為2)、執行(x,權限值為1)。
連接命令
sftp -oPort=32676 upload_pat@ip
連接后ls提示錯誤
Fatal error: Certificate verification: Not trusted (94:0C:C5:11:EE:74:05:7E:6C:CD:63:97:4D:A7:DB:F4:58:FE:4A:61)
解決方法
編輯/etc/lftp.conf,加入下面內容:
set ssl:verify-certificate no
或直接在lftp命令提示符下輸入:set ssl:verify-certificate no 回車。