Ubuntu Server如何配置SFTP
生活随笔
收集整理的這篇文章主要介紹了
Ubuntu Server如何配置SFTP
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
SSH File Transfer Protocol是一個比普通FTP更為安全的文件傳輸協議。(參考資料:http://en.wikipedia.org/wiki/SSH_File_Transfer_Protocol)它工作在Secure Shell(SSH)上,確保文件被加密傳輸。
因為工作需要,我研究了一下如何在Ubuntu Server上配置SFTP,記錄如下。
需求:在服務器上開通SFTP文件服務,允許某些用戶上傳及下載文件。但是這些用戶只能使用SFTP傳輸文件,不能使用SSH終端訪問服務器,并且SFTP不能訪問系統文件(即所謂的“Jail(監獄)”)。系統管理員則既能使用SFTP傳輸文件,也能使用SSH遠程管理服務器。
為了便于討論,我假設我將允許sftp-users用戶組內的用戶使用SFTP,但不允許使用SSH Shell,且該組用戶將被"監獄"(修改系統根目錄)。我將在sftp-users組內創建一個用戶“alice”。而我將允許ssh-users使用SFTP以及SSH。系統管理員的賬戶名為admin。
第01步,如果還沒有安裝OpenSSH服務器,先安裝它。
sudo apt-get install openssh-server
第02步,為SFTP訪問創建用戶組,便于管理權限。
sudo addgroup sftp-users
第03步,創建SFTP用戶,并配置相應權限。這里第二行的意思是將alice從所有其他用戶組中移除并加入到sftp-users組,并且關閉其Shell訪問。如果想深入了解usermod命令,可以使用以下"man usermod"命令查看幫助文檔。
sudo adduser alice
sudo usermod -G sftp-users -s /bin/false alice
第04步,創建SSH用戶組,并把管理員加入到該組(注意usermod中的-a參數的意思是不從其他用戶組用移除)。
sudo addgroup ssh-users
sudo usermod -a -G ssh-users admin
第05步,準備“監獄”的根目錄及共享目錄。這里解釋一下,“監獄”的根目錄必須滿足以下要求:所有者為root,其他任何用戶都不能擁有寫入權限。因此,為了讓SFTP用戶能夠上傳文件,還必須在“監獄”根目錄下再創建一個普通用戶能夠寫入的共享文件目錄。為了便于管理員通過SFTP管理上傳的文件,我把這個共享文件目錄配置為:由admin所有,允許sftp-users讀寫。這樣,管理員和SFTP用戶組成員就都能讀寫這個目錄了。
sudo mkdir /home/sftp_root
sudo mkdir /home/sftp_root/shared
sudo chown admin:sftp-users /home/sftp_root/shared
sudo chmod 770 /home/sftp_root/shared
第06步,修改SSH配置文件。
sudo nano /etc/ssh/sshd_config
在sshd_config文件的最后,添加以下內容:
AllowGroups ssh-users sftp-users
Match Group sftp-users
? ? ChrootDirectory /home/sftp_root
? ? AllowTcpForwarding no
? ? X11Forwarding no
? ? ForceCommand internal-sftp
這些內容的意思是:
只允許ssh-uers及sftp-users通過SSH訪問系統;
針對sftp-users用戶,額外增加一些設置:將“/home/sftp_root”設置為該組用戶的系統根目錄(因此它們將不能訪問該目錄之外的其他系統文件);禁止TCP Forwarding和X11 Forwarding;強制該組用戶僅僅使用SFTP。
如果需要進一步了解細節,可以使用“man sshd_config”命令。這樣設置之后,SSH用戶組可以訪問SSH,并且不受其他限制;而SFTP用戶組僅能使用SFTP進行訪問,而且被關進監獄目錄。
第07步,重啟系統以便使新配置生效。
sudo reboot now
完成啦!
進一步的討論:SSH用戶組將能遠程訪問所有系統文件,也許不是所有情況下都適用。某些情況下,也許想同樣把SSH用戶也關監獄。這時候,需要作跟SFTP類似的配置(除了不用usermod -s /bin/false),而且需要
因為工作需要,我研究了一下如何在Ubuntu Server上配置SFTP,記錄如下。
需求:在服務器上開通SFTP文件服務,允許某些用戶上傳及下載文件。但是這些用戶只能使用SFTP傳輸文件,不能使用SSH終端訪問服務器,并且SFTP不能訪問系統文件(即所謂的“Jail(監獄)”)。系統管理員則既能使用SFTP傳輸文件,也能使用SSH遠程管理服務器。
為了便于討論,我假設我將允許sftp-users用戶組內的用戶使用SFTP,但不允許使用SSH Shell,且該組用戶將被"監獄"(修改系統根目錄)。我將在sftp-users組內創建一個用戶“alice”。而我將允許ssh-users使用SFTP以及SSH。系統管理員的賬戶名為admin。
第01步,如果還沒有安裝OpenSSH服務器,先安裝它。
sudo apt-get install openssh-server
第02步,為SFTP訪問創建用戶組,便于管理權限。
sudo addgroup sftp-users
第03步,創建SFTP用戶,并配置相應權限。這里第二行的意思是將alice從所有其他用戶組中移除并加入到sftp-users組,并且關閉其Shell訪問。如果想深入了解usermod命令,可以使用以下"man usermod"命令查看幫助文檔。
sudo adduser alice
sudo usermod -G sftp-users -s /bin/false alice
第04步,創建SSH用戶組,并把管理員加入到該組(注意usermod中的-a參數的意思是不從其他用戶組用移除)。
sudo addgroup ssh-users
sudo usermod -a -G ssh-users admin
第05步,準備“監獄”的根目錄及共享目錄。這里解釋一下,“監獄”的根目錄必須滿足以下要求:所有者為root,其他任何用戶都不能擁有寫入權限。因此,為了讓SFTP用戶能夠上傳文件,還必須在“監獄”根目錄下再創建一個普通用戶能夠寫入的共享文件目錄。為了便于管理員通過SFTP管理上傳的文件,我把這個共享文件目錄配置為:由admin所有,允許sftp-users讀寫。這樣,管理員和SFTP用戶組成員就都能讀寫這個目錄了。
sudo mkdir /home/sftp_root
sudo mkdir /home/sftp_root/shared
sudo chown admin:sftp-users /home/sftp_root/shared
sudo chmod 770 /home/sftp_root/shared
第06步,修改SSH配置文件。
sudo nano /etc/ssh/sshd_config
在sshd_config文件的最后,添加以下內容:
AllowGroups ssh-users sftp-users
Match Group sftp-users
? ? ChrootDirectory /home/sftp_root
? ? AllowTcpForwarding no
? ? X11Forwarding no
? ? ForceCommand internal-sftp
這些內容的意思是:
只允許ssh-uers及sftp-users通過SSH訪問系統;
針對sftp-users用戶,額外增加一些設置:將“/home/sftp_root”設置為該組用戶的系統根目錄(因此它們將不能訪問該目錄之外的其他系統文件);禁止TCP Forwarding和X11 Forwarding;強制該組用戶僅僅使用SFTP。
如果需要進一步了解細節,可以使用“man sshd_config”命令。這樣設置之后,SSH用戶組可以訪問SSH,并且不受其他限制;而SFTP用戶組僅能使用SFTP進行訪問,而且被關進監獄目錄。
第07步,重啟系統以便使新配置生效。
sudo reboot now
完成啦!
進一步的討論:SSH用戶組將能遠程訪問所有系統文件,也許不是所有情況下都適用。某些情況下,也許想同樣把SSH用戶也關監獄。這時候,需要作跟SFTP類似的配置(除了不用usermod -s /bin/false),而且需要
轉載于:https://www.cnblogs.com/java20130722/archive/2013/03/26/3206968.html
總結
以上是生活随笔為你收集整理的Ubuntu Server如何配置SFTP的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Tempter of the Bone(
- 下一篇: 异步调用代码嵌套问题