我正在使用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”。
1条答案
按热度按时间7rtdyuoh1#
字符串
在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服务器将由于错误配置而丢弃会话。