天天看點

FTP、SFTP部署

作者:滬飄運維

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)

FTP、SFTP部署

解決方法

編輯/etc/lftp.conf,加入下面内容:

set ssl:verify-certificate no

或直接在lftp指令提示符下輸入:set ssl:verify-certificate no 回車。