FTP服務
軟體安裝包: vsftpd
預設釋出目錄: /var/ftp
協定接口: 21/tcp
服務配置檔案: /etc/vsftpd/vsftpd.conf
報錯id的解析:
500 ##檔案系統權限過大
530 ##使用者認證失敗
550 ##服務本身功能未開放
553 ##檔案權過小
FTP(File Transfer Protocol),是檔案傳輸協定的簡稱。用于Internet上的控制檔案的雙向傳輸。同時,
它也是一個應用程式(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 [email protected]:~> 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 [email protected]:~> put /etc/passwd
3190 bytes transferred
lftp [email protected]:~> 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 [email protected]:~> rm passwd
rm ok, `passwd' removed
lftp [email protected]:~> 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 [email protected]:~> mkdir hello
mkdir ok, `hello' created
lftp [email protected]:~> 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 [email protected]:~> touch file
Unknown command `touch'.
lftp [email protected]:~> 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 [email protected]
參數說明:
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 回車。