SFTP協議服務器
簡介:sftp是Secure File Transfer Protocol的縮寫,安全文件傳送協議。可以為傳輸文件提供一種安全的加密方法。sftp 與 ftp有着幾乎一樣的語法和功能,但注意:sftp和ftp(vsftpd)一點關系都沒有。SFTP 是 SSH的一部份,是一種傳輸文件數據至sftp服務器的協議。本身沒有守護進程,是包含在ssh中,同樣使用ssh端口22。
目标:實現sftp多個用戶可上傳下載文件,并且各個用戶都擁有不同的根目錄實現安全隔離。
腳本演示:sftp服務搭建,本人已經寫成腳本,一起來看看腳本執行得效果先
sftp自動化腳本執行效果
注意⚠️:要實現郵件發送,老猴将抽時間在接下來的下一篇實踐操刀
遠程登錄操作:
SFTP遠程登錄操作
實操搭建:版本說明:
OS系統版本:CentOS 7.7
SSH版本:OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017
系統版本及ssh版本
sftp服務器搭建方式:
1、sftp本事植根于ssh,有ssh就有sftp,所以直接在系統上新建一個用戶即可完成搭建,這種方式最簡單,但最不安全,sftp用戶登陸之後可以随意切換目錄,很不安全,生産環境中絕對是不能接受的安全威脅。
2、标準的、安全的sftp的搭建
第一步:新建sftp用戶組(任意組名,為便于識别,此例用戶組取名sftp)
groupadd sftp
第二部:新建sftp用戶(任意用戶名,為便于識别,此例用戶組取名sftpu01)
useradd -g sftp -s /bin/false sftpu01
注意⚠️:安全考慮,需要禁止sftp用戶ssh登陸到系統,所以新建用戶有-s/bin/false選項
第三部:為sftp用戶設置12位随機密碼(位數和複雜度按需設置)
PassWd=$(strings /dev/urandom | grep -o '[[:alnum:]]' | head -n 12 | tr -d "\n";echo)
echo -e "${PassWd}"|passwd --stdin sftpu01
注意⚠️:生成複雜随機密碼的方式很多,此例使用urandom實現
第四部:為sftp用戶建立根目錄和可讀寫數據目錄并設置用戶和用戶組(sftp用戶的根目錄此例為/data_sftp/sftpu01)
新建目錄及修改所屬組/主
mkdir -p /data_sftp/sftpu01 && chown root:sftp /data_sftp/sftpu01
修改用sftp用戶根目錄
usermod -d /data_sftp/sftpu01 sftpu01
建立sftp用戶可讀寫的數據目錄
mkdir -p /data_sftp/sftpu01/data01
為sftp用戶可讀寫的數據目錄設置用戶及用戶組權限
chown -R sftpu01:sftp /data_sftp/sftpu01/data01
chmod 755 /data_sftp/sftpu01/data01
第五部:修改/etc/ssh/sshd_config文件(注意⚠️,此步驟隻在首次部署sftp操作,後期新加sftp用戶不需要在執行)
将Subsystem sftp /usr/libexec/openssh/sftp-server這一行修改為:
#Subsystem sftp /usr/libexec/openssh/sftp-server,即在行前添加#号或删除
新添加内容:
Subsystem sftp internal-sftp -l INFO -f AUTH #這行指定使用sftp服務使用系統自帶的internal-sftp
Match Group sftp #這行用來匹配用戶組
ChrootDirectory /data_sftp/sftpu01%u #用chroot将用戶的根目錄指定到/data_sftp/sftpu01 ,這樣用戶就隻能在/data/sftp下活動
AllowTcpForwarding no #這兩行,如果不希望該用戶能使用端口轉發的話就加上,否則删掉
X11Forwarding no #這兩行,如果不希望該用戶能使用端口轉發的話就加上,否則删掉
ForceCommand internal-sftp -l INFO -f AUTH #指定sftp命令
第六步:重啟ssh,使之生效
service sshd restart
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!