歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux服務器 >> Linux下為不使用SSH的用戶提供SFTP服務環境

Linux下為不使用SSH的用戶提供SFTP服務環境

日期:2017/3/2 16:27:23   编辑:Linux服務器

  SFTP

  sftp是Secure File Transfer Protocol的縮寫,安全文件傳送協議。可以為傳輸文件提供一種安全的加密方法。sftp 與 ftp 有著幾乎一樣的語法和功能。SFTP 為 SSH的一部分,是一種傳輸檔案至 Blogger 伺服器的安全方式。其實在SSH軟件包中,已經包含了一個叫作SFTP(Secure File Transfer Protocol)的安全文件傳輸子系統,SFTP本身沒有單獨的守護進程,它必須使用sshd守護進程(端口號默認是22)來完成相應的連接操作,所以從某種意義上來說,SFTP並不像一個服務器程序,而更像是一個客戶端程序。SFTP同樣是使用加密傳輸認證信息和傳輸的數據,所以,使用SFTP是非常安全的。但是,由於這種傳輸方式使用了加密/解密技術,所以傳輸效率比普通的FTP要低得多,如果您對網絡安全性要求更高時,可以使用SFTP代替FTP。

  PS:FTP與SFTP的區別

  FTP是文件傳輸協議。在網站上,如果你想把文件和人共享,最便捷的方式莫過於把文件上傳到FTP服務器上,其他人通過FTP客戶端程序來下載所需要的文件。

  FTP進行文件傳輸需要通過端口進行。一般所需端口為:

  1.控制鏈路—TCP端口21。控制器端。用於發送指令給服務器以及等待服務器響應。

  2.數據鏈路---TCP端口20。數據傳輸端口。用來建立數據傳輸通道的。主要用來從客戶向服務器發送一個文件、從服務器向客戶發送一個文件、從服務器向客戶發送文件或目錄列表。

  FTP為了適應不同的網絡環境,支持主動連接和被動連接兩種模式。這兩種模式都主要針對數據鏈路進行的,跟控制鏈路無關。

  FTP的安全隱患:

  一、FTP服務器軟件漏洞。

  二、明文口令。

  三、FTP旗標。

  四、通過FTP服務器進行端口掃描。

  五、數據劫持。

  FTP的安全策略:

  一、使用較比安全的系統和FTP服務軟件。

  二、使用密文傳輸用戶名和口令。

  三、更改服務軟件的旗標。

  四、加強協議安全性。

  為非SSH用戶配置SFTP環境

  SFTP是Secure File Transfer Protocol的縮寫,是安全文件傳送協議。可以為傳輸文件提供一種安全的加密方法。跟ftp幾乎語法功能一樣。

  步驟:1 創建組

  代碼如下:

  [root@localhost ~]# groupadd sftp_users

  步驟:2 分配附屬組(sftp_users)給用戶

  如果用戶在系統上不存在,使用以下命令創建( LCTT 譯注:這裡給用戶指定了一個不能登錄的 shell,以防止通過 ssh 登錄):

  代碼如下:

  [root@localhost ~]# useradd -G sftp_users -s /sbin/nologin jack

< p>[root@localhost ~]# passwd jack

  對於已經存在的用戶,使用以下usermod命令進行修改:

  代碼如下:

  [root@localhost ~]# usermod –G sftp_users -s /sbin/nologin jack

  注意:如果你想要修改用戶的默認家目錄,那麼可以在useradd和usermod命令中使用‘-d’選項,並設置合適的權限。

  步驟:3 現在編輯配置文件 “/etc/ssh/sshd_config”

  代碼如下:

  # vi /etc/ssh/sshd_config

< p>#comment out the below line and add a line like below

< p>#Subsystem sftp /usr/libexec/openssh/sftp-server

< p>Subsystem sftp internal-sftp

< p># add Below lines at the end of file

< p>Match Group sftp_users

< p>X11Forwarding no

< p>AllowTcpForwarding no

< p>ChrootDirectory %h

< p>ForceCommand internal-sftp

  此處:

  Match Group sftp_users – 該參數指定以下的行將僅僅匹配sftp_users組中的用戶

  ChrootDirectory %h – 該參數指定用戶驗證後用於chroot環境的路徑(默認的用戶家目錄)。對於用戶 Jack,該路徑就是/home/jack。

  ForceCommand internal-sftp – 該參數強制執行內部sftp,並忽略任何~/.ssh/rc文件中的命令。

  重啟ssh服務

  代碼如下:

  # service sshd restart

  步驟:4 設置權限:

  代碼如下:

  [root@localhost ~]# chmod 755 /home/jack

< p>[root@localhost ~]# chown root /home/jack

< p>[root@localhost ~]# chgrp -R sftp_users /home/jack

  如果你想要允許jack用戶上傳文件,那麼創建一個上傳文件夾,設置權限如下:

  代碼如下:

  [root@localhost jack]# mkdir /home/jack/upload

< p>[root@localhost jack]# chown jack. /home/jack upload/

  步驟:5 現在嘗試訪問系統並進行測試

  嘗試通過ssh訪問系統

20151211120252349.png (462×129)

  正如下圖所示,用戶jack通過SFTP登錄,而且因為chroot環境不能切換目錄。

20151211120312379.png (519×159)

  現在進行上傳和下載測試,如下圖:

20151211120329443.png (713×186)

  正如上圖所示,jack用戶的上傳下載功能都工作得很好。

Copyright © Linux教程網 All Rights Reserved