提示:為保證文章的正確性和實用性,文章內容可能會不定時優(yōu)化改進,若您有建議或者文章存在錯誤請私信留言或評論指正??????。下面以Ubuntu22.04操作系統(tǒng)為例,介紹具體的操作步驟,如果本文對你有幫助,記得關注加收藏??。
1、文章前言
本文以Ubuntu22.04系統(tǒng)為例,介紹如何在Linux環(huán)境中,根據(jù)用戶數(shù)據(jù)隔離性需求,配置獨立或共享目錄的sftp服務。
2、服務介紹
SFTP(SSH File Transfer Protocol)是一種通過SSH(Secure Shell)進行安全傳輸文件的協(xié)議。由于SFTP是基于SSH的,所以SFTP使用SSH的TCP22端口進行數(shù)據(jù)傳輸,具備了SSH的安全性和數(shù)據(jù)加密功能來保護文件傳輸過程中的數(shù)據(jù)安全。
3、操作步驟
3.1、規(guī)劃配置sftp全局數(shù)據(jù)存儲目錄
在配置sftp之前,首先要規(guī)劃并配置好sftp數(shù)據(jù)存儲目錄。在生產環(huán)境使用中,建議為sftp數(shù)據(jù)存儲目錄單獨掛載一個lvm邏輯卷,而不是直接掛載使用磁盤分區(qū),使用邏輯卷的好處是方便后期動態(tài)調整sftp數(shù)據(jù)存儲目錄空間大小,以及對數(shù)據(jù)進行快照等操作。
步驟一: 如下圖,請參考【Liunx常用操作】LVM邏輯卷的介紹和相關操作(創(chuàng)建、刪除、擴縮容)章節(jié)中的“創(chuàng)建并掛載邏輯卷”步驟,完成sftp數(shù)據(jù)存儲目錄的創(chuàng)建和掛載。注意:sftp數(shù)據(jù)存儲目錄的所屬用戶和組要配置為“root:root”,權限配置為755
3.2、配置sftp用戶獨立目錄的sftp服務
3.2.1、創(chuàng)建并配置sftp用戶
步驟一: 執(zhí)行以下命令,創(chuàng)建用戶組“sftpusers”。
sudo groupadd -f sftpusers
步驟二: 執(zhí)行以下命令,創(chuàng)建用戶“zhangsan、lisi”,并指定用戶所屬組為“sftpusers”。
sudo useradd -g sftpusers zhangsan
sudo useradd -g sftpusers lisi
步驟三: 執(zhí)行以下命令,并根據(jù)提示,設置用戶“zhangsan、lisi”的密碼。
sudo passwd zhangsan
sudo passwd lisi
步驟四: 執(zhí)行以下命令,設置用戶“zhangsan、lisi”的密碼為永不過期。
sudo chage -m 0 -M 99999 -I -1 -E -1 zhangsan
sudo chage -m 0 -M 99999 -I -1 -E -1 lisi
步驟五: 執(zhí)行以下命令,創(chuàng)建用戶“zhangsan、lisi”同名目錄以及數(shù)據(jù)存儲目錄“data”。
sudo mkdir -p /sftpdata/zhangsan/data
sudo mkdir -p /sftpdata/lisi/data
步驟六: 執(zhí)行以下命令,將“zhangsan、lisi”數(shù)據(jù)存儲目錄“data”的所屬用戶和用戶組分別配置為“zhangsan:sftpusers”和“l(fā)isi:sftpusers”。
sudo chown zhangsan:sftpusers /sftpdata/zhangsan/data/
sudo chown lisi:sftpusers /sftpdata/lisi/data/
步驟七: 執(zhí)行以下命令,分別修改用戶“zhangsan、lisi”的主目錄為“/sftpdata/zhangsan”和“/sftpdata/lisi”。
sudo usermod -d /sftpdata/zhangsan/ zhangsan
sudo usermod -d /sftpdata/lisi/ lisi
3.2.2、配置sshd_config文件
步驟一: 執(zhí)行以下命令,查看系統(tǒng)內是否安裝openssh-server服務。
apt list |grep openssh-server
或者
dpkg --get-selections |grep openssh-server
步驟二: 若已安裝openssh-server服務,則執(zhí)行步驟三配置sftp服務相關參數(shù)。若未安裝openssh-server服務,則參考【Liunx常用操作】Ubuntu Server系統(tǒng)配置軟件源章節(jié),配置軟件源并安裝openssh-server服務后,再執(zhí)行下面步驟。
步驟三: 執(zhí)行以下命令,編輯sftp的配置文件“/etc/ssh/sshd_config”。
sudo vim /etc/ssh/sshd_config
步驟四: 按住“Shift”+“g”鍵,將光標移動至配置文件最后一行,按“o”另起一行進入插入模式,并根據(jù)下表描述,復制以下內容至配置文件末尾,修改參數(shù)值為實際環(huán)境需求。
針對用戶生效的sftp配置模板:
Match User zhangsan
ChrootDirectory /sftpdata/zhangsan
ForceCommand internal-sftp
PermitTunnel no
AllowTcpForwarding no
Match User lisi
ChrootDirectory /sftpdata/lisi
ForceCommand internal-sftp
參數(shù) | 值 | 說明 |
---|---|---|
Match | User xxx或者Group xxx | 引入一個條件塊,條件塊以Match開始,以另一個Match或者文件結尾結束。Match下面的配置項針對當前Match的值生效,且比全局設置的參數(shù)優(yōu)先。如果存在一個值滿足多個Match,則針對該值只生效第一個Match下的參數(shù) |
ChrootDirectory | 目錄 | 將sftp用戶限制在指定的目錄中,用戶將無法訪問該目錄之外的文件系統(tǒng)目錄 |
ForceCommand | internal-sftp或者cvs server或者命令腳本的絕對路徑 | 指定用戶成功登錄后要強制執(zhí)行的命令或腳本權限。比如僅允許使用sftp協(xié)議進行文件傳輸操作的“internal-sftp”或者僅允許訪問CVS服務器的“cvs server”又或者可以通過配置“/etc/profile”以及用戶的“~/.bashrc”文件自定義限制權限的“/usr/local/bin/limited-shell” |
PermitTunnel | yes or no | 是否允許用戶進行進行SSH隧道鏈接,禁止可以防止用戶在sftp會話中建立與其他服務器或設備的SSH隧道連接 |
AllowTcpForwarding | yes or no | 是否允許用戶進行TCP轉發(fā),禁止可以防止用戶在sftp會話中建立與其他服務器或設備的TCP連接 |
X11Forwarding | yes or no | 是否允許用戶進行X11轉發(fā),禁止可以防止用戶在sftp會話中顯示遠程X11圖形應用程序窗口 |
AllowAgentForwarding | yes or no | 是否允許用戶進行代理轉發(fā),禁止可以防止用戶在sftp會話中使用代理轉發(fā)來訪問其他系統(tǒng)或服務,甚至繞過網(wǎng)絡防火墻 |
PermitTTY | yes or no | 是否允許用戶在sftp會話中使用TTY(終端)進行交互,默認為yes。禁止可以限制用戶只能執(zhí)行非交互式的命令或腳本 |
步驟五: 在“/etc/ssh/sshd_config”配置文件中找到如下行并取消注釋(刪除行首的#
符號)。若沒有該行則手動添加,若有該行則查看行首是否有#
,有則去掉#
,沒有則跳過該步驟。
Subsystem sftp /usr/lib/openssh/sftp-server
步驟六: sftp相關配置修改完成后,按“Esc”鍵退出vim文本編輯器的插入模式,按住“Shift”+“:”鍵進入vim文本編輯器的命令行模式,輸入“wq”保存修改并退出編輯。
步驟七: 執(zhí)行以下命令,重啟ssh服務使配置生效。
sudo systemctl restart ssh
步驟八: 執(zhí)行以下命令,確認ssh服務狀態(tài)為“active (running)”。
sudo systemctl status ssh
3.2.3、驗證sftp連接
步驟一: 本地執(zhí)行以下命令,輸入密碼分別用“zhangsan、lisi”用戶登錄sftp服務器,執(zhí)行如下圖中命令,查看sftp目錄下數(shù)據(jù),并分別創(chuàng)建一個“welcome_用戶名_sftp”的文件夾,然后輸入“exit”退出sftp服務器。
sftp zhangsan@127.0.0.1
sftp lisi@127.0.0.1
步驟二: 執(zhí)行以下命令,可以看到各用戶目錄下的“welcome_用戶名_sftp”文件夾。
sudo ls -l /sftpdata/*/data
說明:sftp用戶空間獨立的使用場景下,各個用戶在“/etc/ssh/sshd_config”配置文件中需獨立配置Match條件塊,從而實現(xiàn)每個用戶的數(shù)據(jù)存儲目錄獨立,彼此間不可見。
3.3、配置sftp用戶共享目錄的sftp服務
3.3.1、創(chuàng)建并配置sftp用戶
步驟一: 執(zhí)行以下命令,創(chuàng)建用戶組“sftpusers”。
sudo groupadd -f sftpusers
步驟二: 執(zhí)行以下命令,創(chuàng)建用戶“zhangsan、lisi”,并指定用戶所屬組為“sftpusers”。
sudo useradd -g sftpusers zhangsan
sudo useradd -g sftpusers lisi
步驟三: 執(zhí)行以下命令,并根據(jù)提示,設置用戶“zhangsan、lisi”的密碼。
sudo passwd zhangsan
sudo passwd lisi
步驟四: 執(zhí)行以下命令,設置用戶“zhangsan、lisi”的密碼為永不過期。
sudo chage -m 0 -M 99999 -I -1 -E -1 zhangsan
sudo chage -m 0 -M 99999 -I -1 -E -1 lisi
步驟五: 執(zhí)行以下命令,創(chuàng)建共享的“share”目錄。
sudo mkdir /sftpdata/share/
步驟六: 執(zhí)行以下命令,將“share”目錄的所屬用戶和用戶組配置為“zhangsan:sftpusers”,并把權限設置為“777”。
sudo chown zhangsan:sftpusers /sftpdata/share/
sudo chmod 777 /sftpdata/share/
步驟七: 執(zhí)行以下命令,分別修改用戶“zhangsan、lisi”的主目錄為“/sftpdata/share”。
sudo usermod -d /sftpdata/share/ zhangsan
sudo usermod -d /sftpdata/share/ lisi
3.3.2、配置sshd_config文件
步驟一: 執(zhí)行以下命令,查看系統(tǒng)內是否安裝openssh-server服務。
apt list |grep openssh-server
或者
dpkg --get-selections |grep openssh-server
步驟二: 若已安裝openssh-server服務,則執(zhí)行步驟三配置sftp服務相關參數(shù)。若未安裝openssh-server服務,則參考【Liunx常用操作】Ubuntu Server系統(tǒng)配置軟件源章節(jié),配置軟件源并安裝openssh-server服務后,再執(zhí)行下面步驟。
步驟三: 執(zhí)行以下命令,編輯sftp的配置文件“/etc/ssh/sshd_config”。
sudo vim /etc/ssh/sshd_config
步驟四: 按住“Shift”+“g”鍵,將光標移動至配置文件最后一行,按“o”另起一行進入插入模式,并根據(jù)下表描述,復制以下內容至配置文件末尾,修改參數(shù)值為實際環(huán)境需求。
針對sftpusers用戶組生效的sftp配置模板:說明:使用“針對sftpusers用戶組生效的sftp配置模板”配置“/etc/ssh/sshd_config”文件時,如果后期需要新增sftp用戶,只需參考上面步驟創(chuàng)建新的sftp用戶并加入sftpusers用戶組即可,無需再次修改“/etc/ssh/sshd_config”配置文件。
Match Group sftpusers
ChrootDirectory /sftpdata/
ForceCommand internal-sftp
PermitTunnel no
AllowTcpForwarding no
X11Forwarding no
AllowAgentForwarding no
參數(shù) | 值 | 說明 |
---|---|---|
Match | User xxx或者Group xxx | 引入一個條件塊,條件塊以Match開始,以另一個Match或者文件結尾結束。Match下面的配置項針對當前Match的值生效,且比全局設置的參數(shù)優(yōu)先。如果存在一個值滿足多個Match,則針對該值只生效第一個Match下的參數(shù) |
ChrootDirectory | 目錄 | 將sftp用戶限制在指定的目錄中,用戶將無法訪問該目錄之外的文件系統(tǒng)目錄 |
ForceCommand | internal-sftp或者cvs server或者命令腳本的絕對路徑 | 指定用戶成功登錄后要強制執(zhí)行的命令或腳本權限。比如僅允許使用sftp協(xié)議進行文件傳輸操作的“internal-sftp”或者僅允許訪問CVS服務器的“cvs server”又或者可以通過配置“/etc/profile”以及用戶的“~/.bashrc”文件自定義限制權限的“/usr/local/bin/limited-shell” |
PermitTunnel | yes or no | 是否允許用戶進行進行SSH隧道鏈接,禁止可以防止用戶在sftp會話中建立與其他服務器或設備的SSH隧道連接 |
AllowTcpForwarding | yes or no | 是否允許用戶進行TCP轉發(fā),禁止可以防止用戶在sftp會話中建立與其他服務器或設備的TCP連接 |
X11Forwarding | yes or no | 是否允許用戶進行X11轉發(fā),禁止可以防止用戶在sftp會話中顯示遠程X11圖形應用程序窗口 |
AllowAgentForwarding | yes or no | 是否允許用戶進行代理轉發(fā),禁止可以防止用戶在sftp會話中使用代理轉發(fā)來訪問其他系統(tǒng)或服務,甚至繞過網(wǎng)絡防火墻 |
PermitTTY | yes or no | 是否允許用戶在sftp會話中使用TTY(終端)進行交互,默認為yes。禁止可以限制用戶只能執(zhí)行非交互式的命令或腳本 |
步驟五: 在“/etc/ssh/sshd_config”配置文件中找到如下行并取消注釋(刪除行首的#
符號)。若沒有該行則手動添加,若有該行則查看行首是否有#
,有則去掉#
,沒有則跳過該步驟。
Subsystem sftp /usr/lib/openssh/sftp-server
步驟六: sftp相關配置修改完成后,按“Esc”鍵退出vim文本編輯器的插入模式,按住“Shift”+“:”鍵進入vim文本編輯器的命令行模式,輸入“wq”保存修改并退出編輯。
步驟七: 執(zhí)行以下命令,重啟ssh服務使配置生效。
sudo systemctl restart ssh
步驟八: 執(zhí)行以下命令,確認ssh服務狀態(tài)為“active (running)”。
sudo systemctl status ssh
3.3.3、驗證sftp連接
步驟一: 本地執(zhí)行以下命令,輸入密碼分別用“zhangsan、lisi”用戶登錄sftp服務器,執(zhí)行如下圖中命令,查看sftp目錄下數(shù)據(jù),并分別創(chuàng)建一個“用戶名_create_welcome”的文件夾,然后輸入“exit”退出sftp服務器。
sftp zhangsan@127.0.0.1
sftp lisi@127.0.0.1
步驟二: 執(zhí)行以下命令,可以看到“share”目錄下各個“用戶名_create_welcome”文件夾,。
sudo ls -l /sftpdata/share/
說明:sftp用戶空間共享的使用場景下,各個用戶在“/etc/ssh/sshd_config”配置文件中共用sftpusers用戶組的Match條件塊,從而實現(xiàn)每個用戶的可見權限相同,彼此數(shù)據(jù)共享,其他用戶可以看見但默認不可修改。
文章來源:http://www.zghlxwxcb.cn/news/detail-756885.html
4、總結
sftp服務的配置流程大致為:規(guī)劃配置sftp全局數(shù)據(jù)存儲目錄 > 檢查或安裝openssh-server服務 > 創(chuàng)建sftp用戶及其數(shù)據(jù)存儲目錄 > 配置“/etc/ssh/sshd_config文件” > 重啟ssh服務 > 用戶登錄測試文章來源地址http://www.zghlxwxcb.cn/news/detail-756885.html
到了這里,關于【Liunx常用操作】配置sftp服務器(用戶獨立目錄&用戶共享目錄)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!