2012-07-21 38 views
0

我有我需要給另一個人SFTP訪問的服務器上的賬戶。然而,這個人只需要訪問一小部分目錄。是否可以在不創建其他用戶帳戶的情況下將ssh密鑰限制爲該子目錄。是否有可能restirct SSH密鑰對特定目錄

基本上對這些目錄都位於一個特定的用戶帳戶的主目錄中生活的網站。我寧願不必創建一個單獨的用戶帳戶,只是將用途鎖定到這些目錄。如果可以使用ssh密鑰來鎖定對特定目錄的訪問,那將是理想的。

回答

0

這是可能的,但它是一種黑客。更喜歡的,更簡單的方法是僅將該用戶的權限授予某些文件和目錄。

+1

怎麼樣'chroot'你的用戶?看看這個鏈接:http://www.techrepublic.com/blog/opensource/chroot-users-with-openssh-an-easier-way-to-confine-users-to-their-home-directories/229 – jessh 2012-07-21 21:36:05

+0

的chrooting用戶要求其下的路徑中的所有目錄都由root擁有,而不能由任何其他用戶寫入。 由於我想限制用戶的目錄是需要由非root帳戶更新的網站的一部分,因此我無法將chroot用於相關子目錄。 – 2012-07-21 22:07:01

0

這是一個關於如何使用SSH而不是SFTP來實現自己的目標的一個答案。這有可能被OP接受,因爲它仍然使用ssh工具鏈。

這種技術是使用ssh的功能,它允許SSH根據提交給主機中的私有密鑰運行的命令。當主機看到該密鑰時,它會運行相關的命令。對於該命令,我們將使用「cat」來轉儲文件。

1)添加一條如下所示的行到〜mr_user/.ssh/authorized_keys2 command =「/ usr/bin/cat〜/ sshxfer/myfile.tar.gz.uu」,no-port-forwarding ssh -dss xxxPUBLIC_KEYxxx mr_user @ tgtmach

2)填充這樣的文件: UUENCODE -m myfile.tar.gz的/ dev /標準輸出>〜mr_user/sshxfer/myfile.tar.gz.uu

3)通過在目標機器上傳輸文件並運行: ssh -i〜/ keys/privatekey.dsa mr_user @ srcmach | sed -e's/ // g'| uudecode> myfile.tar.gz

該命令的棘手部分是在sed命令中有一個換行符,用於從.uu文件中刪除換行符。

我沒有找到一種方法,在文件傳輸的名稱來傳遞,所以我不得不做出我想要轉移的每個文件的關鍵。這對我的用例來說是可以的,因爲我只有兩個文件需要傳輸。

相關問題