linux - 通过 shell,添加具有斜杠路径 ("/") 的用户作为目录 : ssh/sftp impossible,,即使在使用命名目录重新创建它之后也是如此

标签 linux shell ssh sftp

首先,我想做的是将用户监禁(chroot)到特定目录中以进行 sftp 访问。我找到了一个很棒的教程,可以完成这项工作,您可以在这里找到它:http://www.thegeekstuff.com/2012/03/chroot-sftp-setup/ 。您应该先阅读它(它很短)以了解其余部分。

使用链接中的示例,我可以毫无问题地创建 sftpusers 组、guestuser 用户并将其锁定到 /sftp/guestuser/incoming 目录。其操作方法如下:

groupadd sftpusers
useradd -g sftpusers -d /incoming -s /sbin/nologin guestuser
passwd guestuser
chown guestuser:sftpusers /sftp/guestuser/incoming
service ssh restart

之后我尝试做的是锁定 /sftp/test 中同一组中的另一个用户(我们称之为“测试”)。所以我创建了这样的用户:

useradd -g sftpusers -d / -s /sbin/nologin test

你看,我只是将“/”作为目录,而不是/incoming,然后我将权限更改为/sftp/test并重新启动ssh。但连接失败并给出此错误:写入失败:管道损坏

我认为这是由于错误的路径“/”造成的,因此我决定删除用户并使用 /incoming 目录重新创建它:

userdel test
useradd -g sftpusers -d /incoming -s /sbin/nologin test
passwd test
chown test:sftpusers /sftp/test/incoming
service ssh restart

但即使之后,测试用户似乎永远妥协,因为当我尝试通过 sftp 连接时,我遇到了同样的错误:写入失败:管道损坏无法读取数据包:连接被对等方重置

编辑:

这是 sshd 的日志文件:

Jan 24 12:46:20 ns sshd[13786]: error: Could not load host key: /etc/ssh/ssh_host_ecdsa_key
Jan 24 12:46:23 ns sshd[13786]: Accepted password for test from xxx.xxx.xxx.xxx port 37838 ssh2
Jan 24 12:46:23 ns sshd[13786]: pam_unix(sshd:session): session opened for user test by (uid=0)
Jan 24 12:46:24 ns sshd[13949]: fatal: bad ownership or modes for chroot directory "/sftp/test"
Jan 24 12:46:24 ns sshd[13786]: pam_unix(sshd:session): session closed for user test
Jan 24 12:48:17 ns sshd[14103]: error: Could not load host key: /etc/ssh/ssh_host_ecdsa_key
Jan 24 12:48:19 ns sshd[14103]: Invalid user brad from xxx.xxx.xxx.xxx
Jan 24 12:48:19 ns sshd[14103]: input_userauth_request: invalid user brad [preauth]
Jan 24 12:48:19 ns sshd[14103]: pam_unix(sshd:auth): check pass; user unknown
Jan 24 12:48:19 ns sshd[14103]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=xxx.xxx.xxx.xxx
Jan 24 12:48:22 ns sshd[14103]: Failed password for invalid user brad from xxx.xxx.xxx.xxx port 42756 ssh2
Jan 24 12:48:22 ns sshd[14103]: Received disconnect from xxx.xxx.xxx.xxx: 11: Bye Bye [preauth]

最佳答案

检查 sshd 的调试日志。您可能会发现它提示用户 test 的主目录不安全。

sshd 对于访问 $HOME/.ssh 中的用户凭据非常严格,当它无法访问该目录或检测到允许任何其他帐户访问该目录的权限时,它会断开连接。

sshd[13949]: fatal: bad ownership or modes for chroot directory "/sftp/test"

确保该目录的所有者是唯一可以修改 $HOME 及以下文件的帐户。特别注意组设置

关于linux - 通过 shell,添加具有斜杠路径 ("/") 的用户作为目录 : ssh/sftp impossible,,即使在使用命名目录重新创建它之后也是如此,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21330355/

相关文章:

git - 堆栈跟踪 :\sshd. exe : *** fatal error - could not load u, Win32 错误 1114,COPSSH GIT TORTOISEGIT

linux - 执行多个分支。

python - 'RTNETLINK 回答 : File exists'

python - PyQt 静态构建在 make 时失败

linux - 使用 shell 脚本给终端着色

security - 如何记录SSH Secure Shell客户端的所有即将到来的消息?

python-3.x - 使用 Paramiko 的基本 SSH 连接失败

linux - 安装和配置 virtualenv 和 python (Linux)

perl - 根据当前文件的内容从 awk 搜索/读取另一个文件,是否可能?

linux - Bash 记住两个脚本出现之间的值