Ssh
不能chroot使用者
我的 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 實現。