ubuntu 尝试将sftp目录更改为“/media/FileServer/”时出现“No such file”错误

dohp0rv5  于 6个月前  发布在  其他
关注(0)|答案(1)|浏览(84)

我正在使用Renci.SshNet连接到我的Linux服务器。但似乎我的“sftpuser”找不到dir /media/FileServer/。事实上,当我连接时,检查工作目录,它位于/,它能找到的唯一“目录”是/..和/. used code:

var dir = sftp.ListDirectory(sftp.WorkingDirectory);
foreach (var dirEntry in dir)
{
    Console.Out.WriteLineAsync(dirEntry.FullName);
}
sftp.ChangeDirectory("/media/FileServer/"); //Here the error occurs

字符串
sshd配置如下:

Match Group sftp_users
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory /media/FileServer
ForceCommand internal-sftp


我还做了

sudo chown root:root /media/FileServer
sudo chmod 755 /media/FileServer


但没有成功
我已经尝试使用sudo chown -R sftpuser:sftpuser /media/FileServer使sftpuser成为目录所有者
但是当我这样做的时候,我得到了另一个错误,说明“一个已建立的连接被服务器中止”,当我检查日志时,它指出“致命的:chroot目录的所有权或模式不好“/media/FileServer”。

7rtdyuoh

7rtdyuoh1#

ChrootDirectory /media/FileServer
...
sftp.ChangeDirectory("/media/FileServer/"); //Here the error occurs

字符串
在ssh服务器配置中,您将会话设置为根目录“/media/FileServer”。这意味着服务器上的实际“/media/FileServer”目录将显示为远程用户的根目录“/"。
当您与服务器建立SFTP连接时--假设连接受“ChrootDirectory”指令的约束--那么会话中的“/”目录 * 就是 *“/media/FileServer”目录。您的changeDirectory()调用试图更改到目录“/media/FileServer/media/FileServer”。此目录很可能不存在,因此您会得到一个错误。
我已经尝试使用sudo chown -R sftpuser:sftpuser /media/FileServer使sftpuser成为目录所有者
ChrootDirectory功能要求ChrootDirectory及其父目录都由root拥有,而没有组或全局写入权限。将“/media/FileServer”更改为由“sftpuser”拥有将阻止该功能工作,并且SSH服务器将由于错误配置而丢弃会话。

相关问题