我已经在 Windows 10 中设置了内置的 OpenSSH,并通过 WinSCP SFTP 协议进行远程连接。我似乎可以访问C:
驱动器中的所有文件夹,但无法访问计算机的外部驱动器。转到“根”文件夹只会列出驱动C:
器。我尝试在可以访问的目录中创建软目录符号链接,但这似乎不起作用。它们在 WinSCP 中显示为文件,我无法访问它们。我该如何添加它们?此外,如果我想共享对服务器的某些文件夹的访问权限,是否有办法限制对某些文件夹的访问?
答案1
虽然某些 Windows SFTP 服务器确实实现了列出可用驱动器的虚拟根文件夹,但 Win32-OpenSSH 却没有。它将根文件夹重定向/
到/C:/
(或可能是系统驱动器)。
如果您想访问另一个驱动器,您必须手动更改工作目录。
在 WinSCP GUI 中,你可以使用“打开目录”命令并输入所需驱动器的路径,例如
/D:/
。在命令行 SFTP 客户端(如 OpenSSH
sftp
、PuTTYpsftp
或 WinSCP 脚本)中,您可以使用cd
以下命令:cd /D:/
实际上有 WinSCP FAQ如何在远程面板上更改驱动器?
关于您尝试使用符号链接解决此问题:符号链接在 WinSCP 中确实显示为文件(因为服务器将其显示为未知文件类型)。但目录连接点显示为目录(服务器将其显示为常规目录,而不是链接)。尽管自 WinSCP 5.14.2 起,您可以让 WinSCP 尝试使用 进入“文件” Ctrl+PgDn。
答案2
在服务器上,将默认命令 shell 更改为“PowerShell”。
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force
参考此链接 这个改变应该可以解决你的问题。
答案3
用它来设置 sftp https://v2cloud.com/tutorials/how-to-set-up-an-sftp-server-in-windows
\ 由 Windows 使用,而 / 由 unix/linux 使用...当您配置 ssh 或 sftp 时,它提供了类似 unix/linux 的界面,如果我们查看日志,您很可能会看到 c: 的错误,但由于它是 Windows 默认设置,它会将您发送到 c:\sftproot....只需在 sshd_config 文件中设置 ChrootDirectory D:/SFTPRoot
答案4
使用默认“cmd.exe”shell 的 openssh 时似乎存在错误/故障。至少在我的系统上,当您将驱动器号从 c: 更改为 d: 时,目录列表不会刷新,即使您先执行 cls。但使用 powershell,如果您在中间执行 cls,那么它就可以正常工作。