CentOS 7 安裝/設定SFTP
SSH除了可以用來作為遠端伺服器的服務之外,還有一個附加功能—SFTP站台
SFTP(SSH File Transfer Protocol):一個基於SSH2.0規範的安全檔案傳輸服務,因此安全性也會比FTP服務來得高!
(本文會提供有無啟動SELinux的兩種設定方式!)
請先將SSH安裝完畢!
安裝步驟參考此文:CentOS 7 安裝及設定SSH
為設定存取權限,新增使用者群組
本文以使用者群組sftp_group為例
1 |
[andy@www ~]$ sudo groupadd sftp_group |
新增一個專門用來登入SFTP的帳號
本文以使用者testSFTP為例
欲限制這個使用者只能使用SFTP並且禁止登入伺服器,直接使用下列指令!
若允許使用者可以登入伺服器,可以把『-s /sbin/nologin』去除
1 |
[andy@www ~]$ sudo useradd testSFTP -g sftp_group -s /sbin/nologin |
替使用者設定密碼
1 |
[andy@www ~]$ sudo passwd testSFTP |
在使用者的家目錄下建立一個『data資料夾』,只允許使用者透過SFTP上傳資料到『data』資料夾
1 |
[andy@www ~]$ sudo mkdir /home/testSFTP/data |
實現chroot
設定資料夾權限,讓使用者只能存取自己家目錄之下的data資料夾(/home/testSFTP/data/)的東西
務必按照順序修改權限!
1 2 3 4 5 |
[andy@www ~]$ sudo chown root /home/testSFTP/ [andy@www ~]$ sudo chmod 755 /home/testSFTP/ [andy@www ~]$ sudo chown root /home/testSFTP/ [andy@www ~]$ sudo chown testSFTP. /home/testSFTP/data/ [andy@www ~]$ sudo chmod 755 /home/testSFTP/data |
權限設定完成。
/home應該要長這樣
1 2 3 4 5 6 |
[andy@www home]$ ls -al 總計 5 drwxr-xr-x. 4 root root 39 4月 9 10:40 . dr-xr-xr-x. 18 root root 285 5月 6 08:05 .. drwxr-xr-x 6 testSFTP sftp_group 140 4月 9 12:00 testSFTP drwxr-xr-x 6 andy andy 140 1月 1 08:20 andy |
使用者家目錄(/home/testSFTP)應該要長這樣
1 2 3 |
[andy@www testSFTP]$ ls -l 總計 0 drwxr-xr-x 2 testSFTP sftp_group 6 4月 9 11:41 data |
修改SSH設定檔
1 |
[andy@www ~]$ sudo vim /etc/ssh/sshd_config |
找到下列設定,註解起來!(若本來就已經被註解可不理會)
1 |
# Subsystem sftp /usr/libexec/openssh/sftp-server |
增加下面設定 (Port不需要更改,SFTP會與SSH使用相同的Port):
1 |
Subsystem sftp internal-sftp |
下列這段必須寫在設定檔最尾端(非常重要!)
1 2 3 4 5 |
Match Group sftp_group ChrootDirectory %h ForceCommand internal-sftp X11Forwarding no AllowTcpForwarding no |
存檔離開vim
1 |
:wq |
重新啟動SSHD
1 |
[andy@www ~]$ sudo systemctl restart sshd |
請先確認SELinux狀態,這會影影響設定方式:CentOS 7 確認/改變SELinux狀態
如果伺服器是有啟用SELinux的,就必須完成本步驟的設定!
SELinux 設定為Enable,要多做這個動作:
第2行:如果伺服器的SSH是使用預設Port,可以不需執行!
1 2 3 |
[andy@www ~]$ sudo setsebool -P ssh_chroot_rw_homedirs on [andy@www ~]$ semanage port -a -t ssh_port_t -p tcp 6543 [andy@www ~]$ semanage port -l | grep ssh |
允許公開網路通過防火牆存取SFTP服務
(如果使用非預設Port,請自行更改!)
1 |
[andy@www ~]$ sudo firewall-cmd --permanent --zone=public --add-port=22/tcp |
重新載入防火牆設定
設定大功告成!
1 |
[andy@www ~]$ sudo firewall-cmd --reload |
用FileZilla測試!
連接埠:SSH Port號(非預設值22請自行更改)
協定:SFTP