Ubuntu

如何通過 SSH/SFTP 訪問指定文件夾?

  • April 13, 2019

我希望每個使用者只能通過 SFTP 連接訪問他們特定的主目錄。

範例結構:

admin1 access to: /var/www/vhosts/vhost1
(optional)editor1 access to: /var/www/vhosts/vhost1/public

admin2 access to: /var/www/vhosts/vhost2
(optional)editor2 access to: /var/www/vhosts/vhost2/public

etc...
...`

也許您指的是Jail,一個特定使用者將被限制的文件夾。

我將嘗試恢復配置範例

1)環境準備

你需要做一些步驟來準備監獄環境。我們必須尊重 SSH 施加的一些安全限制(如果你願意,你可以禁用它們,這真的是個壞主意!)。

  • Jail文件夾必須是 root 擁有的
  • Jail fodler 不能被組/其他人可寫
  • .ssh/文件夾必須有模式 700
  • authorized_keys文件必須有模式 600

假設您有一個使用者,其使用者名是echoes,主目錄是/home/echoes/,假設我們想將其限制在自己的主目錄中。假設正如您所說,我們要使用具有公鑰授權機制的 SFTP 帳戶。

mkdir /home/echoes/.ssh
# write echoes public-key into /home/echoes/.ssh/authorized_keys
chown root /home/echoes/  
chmod 755 /home/echoes/  
chown -R echoes:echoes /home/echoes/.ssh/  
chmod 700 /home/echoes/.ssh/  
chmod 600 /home/echoes/.ssh/authorized_keys  
  1. SSH 配置

現在我們需要匹配使用者並將其限制在自己的主目錄中。所以,讓我們打開 SSH Server 配置文件:

vim /etc/ssh/sshd_config  

啟用internal-sftp管理 sftp 連接:

Subsystem sftp internal-sftp  

將以下行複制粘貼到sshd_config配置文件中。我們是說:當你匹配時echoes,只需將它移動到定義的ChrootDirectory文件夾中(在這個例子中是它的 onw 主文件夾)。

Match user echoes  
   ChrootDirectory /home/echoes/ 
   ForceCommand internal-sftp

3)允許在子文件夾內進行寫入操作 如您所見,使用者的主文件夾現在是 root 擁有的,因此echoes將無法向其中寫入一些文件。出於這個原因,您可以創建一個新的子文件夾(即echoes-write)允許使用者在其中寫入:

mkdir /home/echoes/echoes-write/
chown echoes:echoes /home/echoes/echoes-write/
chmod ug+w /home/echoes/echoes-write/  

4)自動移動到自己的可寫文件夾中

如果您需要自動:

匹配使用者 -> 將其移動到監獄 -> 將其自動移動到其自己的監獄的可寫子文件夾中,請告訴我,我將嘗試恢復該場景作為配置步驟。

由於您沒有寫有關係統的資訊,因此我做了很多假設。

引用自:https://unix.stackexchange.com/questions/331243