首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >通过shell,添加一个以斜杠路径("/")作为目录的用户: ssh/sftp不可能,即使在用命名目录重新创建它之后。

通过shell,添加一个以斜杠路径("/")作为目录的用户: ssh/sftp不可能,即使在用命名目录重新创建它之后。
EN

Stack Overflow用户
提问于 2014-01-24 10:33:03
回答 1查看 754关注 0票数 0

首先,我要做的是将用户(chroot)关在一个专用目录中,以便进行sftp访问。我找到了一个很好的教程,你可以在这里找到它:http://www.thegeekstuff.com/2012/03/chroot-sftp-setup/。你应该先读一读(很短),才能理解剩下的内容。

使用链接中的示例,创建sftpuser组、guestuser用户并将其锁定到/sftp/guestuser/传入目录没有问题。这是如何做到的:

代码语言:javascript
代码运行次数:0
运行
复制
groupadd sftpusers
useradd -g sftpusers -d /incoming -s /sbin/nologin guestuser
passwd guestuser
chown guestuser:sftpusers /sftp/guestuser/incoming
service ssh restart

之后,我试图从/sftp/test中的同一个组锁定另一个用户(我们称之为"test")。所以我创建了这样的用户:

代码语言:javascript
代码运行次数:0
运行
复制
useradd -g sftpusers -d / -s /sbin/nologin test

您可以看到,/incoming作为目录,我只需输入"/",然后将权限更改为/sftp/test并重新启动ssh。但是连接失败,给我这个错误:写失败:坏了的管道

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

代码语言:javascript
代码运行次数:0
运行
复制
userdel test
useradd -g sftpusers -d /incoming -s /sbin/nologin test
passwd test
chown test:sftpusers /sftp/test/incoming
service ssh restart

但即使在此之后,测试用户似乎也永远处于妥协状态,因为当我试图通过sftp连接时也有相同的错误:写失败:坏掉的管道无法读取数据包:由对等重置连接。

编辑:

以下是sshd的日志文件:

代码语言:javascript
代码运行次数:0
运行
复制
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]
EN

回答 1

Stack Overflow用户

发布于 2014-01-24 11:01:50

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

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

代码语言:javascript
代码运行次数:0
运行
复制
sshd[13949]: fatal: bad ownership or modes for chroot directory "/sftp/test"

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21330355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档