Ubuntu 10.04.4 LTS
我试图根据用户的名字。 根据所有的文章,这应该工作,但显然我仍然做错了什么。
用户:
sam:x:1005:1006::/home/sam:/bin/false
我改变了/ etc / ssh / sshd_config这样(在文件的底部):
#Subsystem sftp /usr/lib/openssh/sftp-server # CHROOT JAIL Subsystem sftp internal-sftp Match group users ChrootDirectory %h ForceCommand internal-sftp AllowTcpForwarding no
我给用户组添加了sam:
$groups sam sam : sam users
我更改了山姆家庭文件夹的权限:
$ ls -la /home/sam drwxr-xr-x 11 root root 4096 Sep 23 16:12 . drwxr-xr-x 8 root root 4096 Sep 22 16:29 .. drwxr-xr-x 2 sam users 4096 Sep 23 16:10 awstats drwxr-xr-x 3 sam users 4096 Sep 23 16:10 etc ... drwxr-xr-x 2 sam users 4096 Sep 23 16:10 homes drwxr-x--- 3 sam users 4096 Sep 23 16:10 public_html
我重新启动了SSH,现在山姆无法使用SFTPlogin。 会议已创build,但也立即closures:
Sep 24 12:55:15 ... sshd[9917]: Accepted password for sam from ... Sep 24 12:55:15 ... sshd[9917]: pam_unix(sshd:session): session opened for user sam by (uid=0) Sep 24 12:55:16 ... sshd[9928]: subsystem request for sftp Sep 24 12:55:17 ... sshd[9917]: pam_unix(sshd:session): session closed for user sam
Cyberduck说Unexpected end of sftp stream. 和其他客户给出了类似的错误。
我忘了什么事了?
谢谢!
编辑
即使在联系OpenSSH邮件列表后,我也无法使其工作,所以我决定重置我的整个服务器(幸运的是这是一个可行的select)。 现在正在工作。
你的设置绝对看起来不错,让我们看看我们是否能找出问题所在。
检查你的openSSH版本是否支持ChrootDirectory :
openSSH 4.8p1( http://www.debian-administration.org/articles/590 )添加了对ChrootDirectory关键字的支持。 检查是否至less安装了该版本:
dpkg --list openssh-server
[这可能不是原因,根据http://releases.ubuntu.com/lucid/ubuntu-10.04.4-server-amd64.list openssh-server的版本是5.3p1]
在本地testingSFTP。
在Ubuntu计算机上键入terminal:
sftp sam@localhost
并查看您是否可以login(当您被问到时,您必须键入sam的密码)。 如果有效,Cyberduck的configuration可能会有问题。
如果无法login,请尝试不使用chroot的SFTP。
在没有chroot的情况下在本地testingSFTP。
前缀:
Match group users ChrootDirectory %h ForceCommand internal-sftp AllowTcpForwarding no
用#注释掉,重启sshd( sudo service ssh restart ),然后input:
sftp sam@localhost
询问时input密码,查看是否可以login。如果可以login,请按照以下步骤对chrootconfiguration进行故障排除:使用命令sftp -vvv sam@localhost再次尝试第2步以获取详细输出。 您还可以通过将LogLevel VERBOSE添加到/etc/ssh/sshd_config并重新启动sshd来增加sshd的日志级别。 希望你能在控制台或/var/log/auth.log看到明显的东西。
如果无法login,请尝试SSH。
在本地testingSSH。
SFTP需要一个可用的SSH,所以将sam的shell改为/ bin / bash:
sudo usermod -s /bin/bash sam
并尝试:
ssh sam@localhost
询问时键入sam的密码。 如果可以login,请按照第3节中的说明尝试增加详细信息以找出错误( sftp -vvv sam@localhost和/etc/ssh/sshd_config LogLevel VERBOSE )。 另一种可能是shell初始化混淆了sftp客户端( http://www.openssh.org/faq.html#2.9 ):
2.9 – sftp / scp连接失败,但是ssh没问题。
如果您的shell初始化(.profile,.bashrc,.cshrc等)为非交互式会话生成输出,则sftp和/或scp可能会在连接时失败。 这个输出混淆了sftp / scp客户端。 您可以通过执行以下命令validation您的shell是否在执行此操作
ssh yourhost /usr/bin/true如果上面的命令产生任何输出,那么你需要修改你的shell初始化。
如果您无法login,请尝试使用ssh root@localhost 。 如果不起作用,那么服务器上的sshd有问题。 增加详细度( /etc/ssh/sshd_config LogLevel VERBOSE ),重新启动sshd并仔细阅读/var/log/auth.log ,答案可能就在那里。
尽pipejaume的回答非常好,但最终还是无法帮到我。 我尝试了OpenSSH邮件列表,但没有运气。 我结束了重置我的整个服务器,我仍然可以幸运地做。 现在工作很完美。
对于“拒绝连接”错误,请检查sshd_config中的“UsePAM yes”设置。 它必须在“Subsystem sftp”之前
对于身份validation问题,请检查root拥有的chroot-path中的EACH目录,并且具有755或更less的权限。
例如:ChrootDirectory / var / www / data
您必须检查权限和所有者:/ var,/ var / www,/ var / www / data
apt-get install openssh-server
“Subsystem sftp internal-sftp”< – >“子系统sftp / usr / lib / openssh / sftp-server”(从你问题的types切换到另一个)