Ssh

不能chroot使用者

  • April 9, 2017

我的 ssh-server 已經像魅力一樣工作了 4 年了,所以我只想添加一個使用者 + chroot 他到一個特定的文件夾。

> useradd -m -c /home/thomas -s /bin/sh thomas
> passwd thomas
> chmod 755 /home/thomas
> chown root: /home/thomas
> service ssh restart

當我這樣做時,我可以連接ssh並且我的sftp連接工作。問題是我想 chroot 到一個特定的文件夾。

> vim /etc/ssh/sshd_config

在文件末尾添加:

Match user thomas
   ChrootDirectory /home/%u

當我只添加這個時,這不應該改變什麼嗎?配置應該是一樣的,我仍然應該能夠連接或使用 sftp…所以我重新啟動,service ssh restart我不能再連接 sftp。

以防萬一:

root@xx:/etc/nginx/sites-enabled# /usr/sbin/sshd -v
sshd: illegal option -- v
OpenSSH_6.0p1 Debian-4+deb7u6, OpenSSL 1.0.1t  3 May 2016
usage: sshd [-46DdeiqTt] [-b bits] [-C connection_spec] [-c host_cert_file]
           [-f config_file] [-g login_grace_time] [-h host_key_file]
           [-k key_gen_time] [-o option] [-p port] [-u len]
root@xx:/etc/nginx/sites-enabled#

我究竟做錯了什麼?

sshd_config手冊指出

ChrootDirectory必須包含支持使用者會話所需的文件和目錄。對於互動式會話,這至少需要一個外殼,通常是sh(1),以及基本/dev節點,例如null(4)zero(4)stdin(4)stdout(4)stderr(4)tty(4)設備。對於使用 SFTP 的文件傳輸會話,如果使用程序內 sftp-server,則不需要額外的環境配置,儘管/dev/log在某些作業系統上使用日誌記錄的會話可能需要在 chroot 目錄中(詳情請參閱sftp-server(8))。

您應該創建dev目錄,然後將/dev/MAKEDEV腳本複製到那裡。使用腳本創建所需的設備文件。

對於互動式使用者,您還需要在 chroot 中安裝必要的二進製文件和相關庫。

ForceCommand internal-sftp應在您的Match塊中使用對“程序內 sftp 伺服器”的引用。

注意:摘自 OpenSSH 7.5,因為我無權訪問任何較舊的 SSH 實現。

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