Ssh

sftp 伺服器 chroot 初始目錄

  • July 6, 2018

我已經用 chroot 配置了一個 sftp 伺服器,它工作正常,唯一困擾我的是初始登陸目錄,因為 sftp 使用者在登陸文件夾中沒有寫權限,他必須去一個以他自己命名的文件夾上傳文件的使用者名。

我設置了:ForceCommand internal-sftp -d %u,我在一些配置指南中找到的,他們說它應該改變登陸文件夾,但它不起作用。一開始我在 passwd 上為使用者登錄配置了一個空腳本,但我將其更改為 /bin/bash 以防它可能與此有關。我重新啟動了服務,所以也可能不是這個原因。

也許這可能與我正在使用的發行版所具有的 ssh 版本有關,或者 sshd 根本無法做到這一點?

這是我對 sshd 的配置:

CentOS 6.6 版(最終版)

OpenSSH_5.3p1,OpenSSL 1.0.1e-fips 201 年 2 月 11 日

Subsystem sftp internal-sftp

Match group sftponly
   ChrootDirectory %h
   X11Forwarding no
   AllowTcpForwarding no
   ForceCommand internal-sftp -d %u

您可以使用-dsftp 選項來為您更改起始目錄。參見sftp-server(8)手冊頁:

-d 開始目錄

為使用者指定一個備用起始目錄。路徑名可能包含以下在執行時擴展的標記:%%替換為文字“%”,%h替換為正在驗證的使用者的主目錄,並%u替換為該使用者的使用者名。預設是使用使用者的主目錄。此選項與 sshd_config(5) 選項結合使用時很有用ChrootDirectory

您可以通過將此作為參數來執行此操作internal-sftp,例如:

Subsystem sftp internal-sftp -d "%h/sftp_home/"

此外,如果您使用以下命令,您可能需要調整您的 force-command:

ForceCommand internal-sftp -d "%h/sftp_home/"

從 6.2 版開始,這應該在 openssh 上可用

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