安裝openssh-server
sudo apt-get install openssh-server
查看是否安裝成功
dpkg --get-selections | grep ssh
新建用戶組 sftp-users,並新建用戶sftp
為SFTP訪問創建用戶組,便於管理權限。並創建sftp用戶:
sudo addgroup sftp-users
sudo adduser sftp
給sftp賦權並新建用戶組ssh-users
將sftp從所有其他用戶組中移除並加入到sftp-users組,並且關閉其Shell訪問:
sudo usermod -G sftp-users -s /bin/false sftp
創建SSH用戶組,並把管理員加入到該組(注意usermod中的-a參數的意思是不從其他用戶組用移除)。
sudo addgroup ssh-users
sudo usermod -a -G ssh-users bbc2005
創建並設置sftp用戶目錄
准備“監獄”的根目錄及共享目錄,“監獄”的根目錄必須滿足以下要求:
所有者為root,其他任何用戶都不能擁有寫入權限。
因此,為了讓sftp用戶能夠上傳文件,還必須在“監獄”根目錄下再創建一個普通用戶能夠寫入的共享文件目錄。
為了便於管理員通過sftp管理上傳的文件,把這個共享文件目錄配置為:由bbc2005所有,允許sftp-users讀寫。這樣,管理員和sftp用戶組成員就都能讀寫這個目錄了。
sudo mkdir /home/sftp_root
sudo mkdir /home/sftp_root/shared
sudo chown bbc2005:sftp-users /home/sftp_root/shared
sudo chmod 770 /home/sftp_root/shared
修改SSH配置文件
vi /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
非常重要:
sftp設置后 ssh 啟動失敗 原因分析
大多數人 在 設置SFTP 使用時會報錯,
排除其他可能的原因,可以嘗試如下:將
Subsystem sftp internal-sftp
Match Group sftp
ChrootDirectory /data
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
放在
UseDNS no
之后就解決了。
重啟ssh
service ssh restart
這些內容的意思是:
只允許ssh-uers及sftp-users通過SSH訪問系統;
針對sftp-users用戶,額外增加一些設置:
將“/home/sftp_root”設置為該組用戶的系統根目錄(因此它們將不能訪問該目錄之外的其他系統文件);
禁止TCP Forwarding和X11 Forwarding;強制該組用戶僅僅使用SFTP。
如果需要進一步了解細節,可以使用“man sshd_config”命令。這樣設置之后,SSH用戶組可以訪問SSH,並且不受其他限制;而SFTP用戶組僅能使用SFTP進行訪問,而且被關進監獄目錄。
作者:我是非魚
鏈接:https://www.jianshu.com/p/ff3c53e46a82
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。