我在 Windows 上使用 PuTTY 和 PSFTP,并连接到我的远程服务器,即 Ubuntu。
我的问题是使用 put 命令选择要上传到远程服务器的文件。
在与 PSFTP 可执行文件相同的目录中,我有一个名为“CSS”的文件夹。
我尝试psftp> put CSS
并且得到它,local: unable to open CSS
即使我在可用目录列表中看到它!dir
。
此外,当我选择另一个有效的文件时,出现以下错误:
open for write: permission denied
我该如何解决这两个问题,第一,无法选择要上传的目录,第二,权限被拒绝错误?
非常感谢。
答案1
在 psftp 中,如果您输入help put
,您将看到以下内容:
put [ -r ] [ -- ] <filename> [ <remote-filename> ]
Uploads a file to the server and stores it there under
the same name, or under a different one if you supply the
argument <remote-filename>.
If -r specified, recursively store a directory.
改用来传输目录。如果您尝试使用 put 命令传输目录而不使用 -r 选项,put -r CSS
则会收到错误消息,例如。local: unable to open CSS
另外,另一个适用于 Microsoft Windows 系统的免费 sftp 程序是温SCP。
在 Ubuntu 系统上,使用 检查您尝试放置文件的目录的权限ls -ld directory_name
。例如,假设您尝试将文件放在名为 test 的目录中:
$ ls -ld test
drwxrwxr-x. 3 jdoe jdoe 61 Feb 14 10:42 test
上述目录归 jdoe 帐户所有,组也是 jdoe。因此,如果您使用 jdoe 帐户通过 psftp 登录 Ubuntu 系统,则您将能够将文件放在 test 目录中,因为目录的所有者帐户具有读取、写入和执行权限(“d”后面的第一个 rwx 字符表示 test 是一个目录。jdoe 组中的任何帐户也具有读取、写入和执行访问权限,“x”还授予搜索或查看目录中文件的能力。最后 3 个权限字符授予r-x
系统上的其他帐户读取和执行权限,即搜索目录或查看其中文件的能力,但不授予写入权限,即修改目录中现有文件或在其中放置新文件的能力。如果您想授予系统上的每个帐户读取、写入和执行权限,您可以使用chmod 777 test
或,chmod o+w test
这为要测试的“其他”帐户添加了写入权限。但请确保允许 Ubuntu 系统上的任何帐户将文件放置在目录中或修改现有文件没有任何安全问题。或者,如果您使用 psftp 登录到拥有该目录的帐户(例如 jdoe 帐户),则不必更改权限。
使用 psftp 登录 Ubuntu 系统后,您还可以在其中查看权限。只需ls
在您想要存储文件的目录上方键入,然后查找您想要存储文件的目录的权限。
例如,如果您尝试将文件放置在 root 拥有的目录中,而其他帐户对该目录没有写权限,那么我期望您报告错误消息。
答案2
或者,您可以下载一个名为 Filezilla 的程序。我在工作中使用它,它允许您直接将文件拖放到您想要的目录中。当您不想使用终端来完成一些琐碎的任务时,它很有用。
它通过 SSH 连接到服务器。