linux 安裝sftp


1、定義sftp的數據目錄

mkdir -p /data/sftp

2、將目錄歸到root用戶,否則無法chroot

chown root. -R /data/sftp/或者chown root:root -R /data/sftp/

3、權限設置為755,不能超過755,保證普通用戶可以進入

chmod 755 -R /data/sftp/

4、添加sftp服務組,sftp服務可以設置匹配組或單個用戶來設置,如果是單個用戶可以忽略

groupadd sftp

5、添加用戶

useradd -d /data/sftp/clptsftp -m g sftp -s /sbin/nologin clptsftp

驗證用戶

id clptsftp

添加密碼  #添加密碼。測試環境從簡,生產不建議此密碼,可以通過網頁 https://suijimimashengcheng.51240.com/ 或mkpasswd命令生成密碼(需要安裝expect軟件包)

echo "123456" | passwd --stdin clptsftp

或者通過passwd clptsftp

sftp組的用戶的home目錄統一指定到/data/sftp下,按用戶名區分,這里先新建一下clptsftp

下面三行的操作可通過添加用戶的時候指定-d來指定,如上面第五步,如果第五步使用useradd g sftp -s /sbin/nogin clptsftp命令的話,就要使用下面三行

mkdir -p /data/sftp/clptsftp

使用usermod 命令,更改用戶的home目錄,且以用戶名區分,

usermod -d /data/sftp/clptsftp clptsftp

 

cd /data/sftp

ls

chown root:sftp clptsftp或者這里可以使用root:root,需要驗證一下

chmod 755 clptsftp

cd clptsftp

mkdir resourceupload

chown clptsftp:sftp resourceupload/

 

修改sshd服務配置文件,以組的方式管理sftp用戶權限

vi /etc/ssh/sshd_config

注釋掉:Subsystem      sftp    /usr/libexec/openssh/sftp-server行

 

 ------------------

Subsystem sftp internal-sftp     #使用sftp服務使用系統自帶的internal-sftp
Match Group sftp                 #匹配sftp組的用戶,如果要匹配多個組,多個組之間用逗號分割
ChrootDirectory /data/sftp/%u    #用chroot將用戶的根目錄指定到/data/sftp/%u,%u代表用戶名,這樣用戶就只能在/data/sftp/%u下活動
ForceCommand internal-sftp       #強制執行內部sftp,並忽略任何~/.ssh/rc文件中的命令
AllowTcpForwarding no            #不允許轉發TCP協議,默認是yes,如果用戶可以shell訪問則建議為yes
X11Forwarding no                 #是否允許進行 X11 轉發。默認值是"no",設為"yes"表示允許。如果允許X11轉發並且sshd(8)代理的顯示區被配置為在含有通配符的地址(X11UseLocalhost)上監聽。那么將可能有額外的信息被泄漏。由於使用X11轉發的可能帶來的風險,此指令默認值為"no"。需要注意的是,禁止X11轉發並不能禁止用戶轉發X11通信,因為用戶可以安裝他們自己的轉發器。如果啟用了 UseLogin ,那么X11轉發將被自動禁止。

在文件最后面添加如下幾行內容,然后保存。
Subsystem       sftp    internal-sftp  
Match Group sftp  
匹配sftp組的用戶,如果有多個組用逗號分割 也可以使用“Match User mysftp”匹配用戶,多個用戶之間也是用逗號分割
ChrootDirectory /data/sftp/%u  
用chroot將用戶的根目錄指定到/data/ftp/%u,%u代表用戶名,%h表示用戶根目錄
ForceCommand    internal-sftp  
指定sftp命令
AllowTcpForwarding no
 
X11Forwarding no
禁止用戶使用端口轉發 建立用戶和組放

------------------

5、設定Chroot目錄權限
chown root:sftp /data/sftp/clptsftp
chmod 755 /data/sftp/clptsftp

 
        

6、建立SFTP用戶登入后可寫入的目錄
照上面設置后,在重啟sshd服務后,用戶mysftp已經可以登錄。但使用chroot指定根目錄后,根應該是無法寫入的,所以要新建一個目錄供mysftp上傳文件。這個目錄所有者為mysftp,所有組為sftp,所有者有寫入權限,而所有組無寫入權限。命令如下:

mkdir /data/sftp/clptsftp/resourcesupload
chown clptsftp:sftp /data/sftp/clptsftp/resourcesupload
chmod 755 /data/sftp/clptsftp/resourcesupload

7、修改/etc/selinux/config
文本編輯器打開/etc/selinux/config

vi /etc/selinux/config
將文件中的SELINUX=enforcing 修改為 SELINUX=disabled ,然后保存。

在輸入命令

setenforce 0

8、重啟sshd服務
輸入命令重啟服務。

service sshd restart

9、驗證sftp環境
用mysftp用戶名登錄,yes確定,回車輸入密碼。
sftp mysftp@127.0.0.1
顯示 sftp> 則sftp搭建成功。

10、使用FileZilla FTP Client連接SFTP服務器

輸入主機IP地址、用戶名、密碼、端口連接SFTP服務器,端口默認為22。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM