Ssh

OpenSSH internal-sftp 不接受 allowed/denied_requests

  • September 29, 2021

嘗試使用 OpenSSH_7.4p1 設置高度受限的 SFTP 伺服器,以便遠端腳本上傳數據。目標是一個黑洞,腳本可以使用使用者級別的鍵執行“放置”,而其他伺服器命令是不可能的。一切正常,直到最後一步我嘗試限制sftp命令集使用-P-psshd_config Match子句中的選項:

Match user globalstat
   ChrootDirectory /inbound
   ForceCommand internal-sftp -d data -p put -P df,pwd,rm,mkdir,rmdir,get,rename,symlink

-P嘗試了多種組合,但denied_requests永遠不會阻止任何指定的遠端命令。應用或中斷傳輸並返回allowed_requests" Couldn’t canonicalise: Permission denied Need cwd"。沒有or ,寫入沒有問題,並且根據其他有關此錯誤的文章,我很確定我的目錄權限是正確的。我一直在使用此手冊頁作為參考:https ://www.man7.org/linux/man-pages/man8/sftp-server.8.html-p put``put,cd``-P``-p

這意味著not 是這些選項的位置,但它們在的主體中不起作用,並且如果在子句中使用sshd而Subsystem不是.ForceCommand``sshd_config``Subsystem``Match``ForceCommand

我真的希望有可能得到這個工作,任何建議將不勝感激。

-p/的參數-P是低級SFTP 協議請求的名稱。不是高級 OpenSSHsftp 客戶端命令

這些是名稱:open, close, read, write, lstat, fstat, setstat, fsetstat, opendir, readdir, remove, mkdir, rmdir, realpath, stat, rename, readlink, symlink, posix-rename, statvfs, fstatvfs, hardlink, fsync, lsetstat.

sftp-server -Q requests正如sftp-server手冊頁所說,您可以通過執行獲得最新列表。

鑑於已經回答了這個問題,我將只提一個最初導致我來到這裡的問題:

儘管internal-sftp ...表達式看起來像一個普通的命令,但雙引號似乎並沒有像往常一樣被處理。這不適用於mkdirand symlink

ForceCommand internal-sftp -l INFO -P "mkdir,rmdir,ln,symlink"

這會:

ForceCommand internal-sftp -l INFO -P mkdir,rmdir,ln,symlink

引用自:https://serverfault.com/questions/1065199