使用 scp 传输文件:权限被拒绝

Ere*_*rez 57 ssh scp permissions

我尝试将文件从远程计算机传输ssh到我的计算机:

scp My_file.txt user_id@server:/Home
Run Code Online (Sandbox Code Playgroud)

这应该将 My_file.txt 放在我自己计算机上的主文件夹中,对吗?我得到

scp/Home:权限被拒绝

此外,当我尝试:...@server:/Desktop,以便将文件从远程计算机复制到我的桌面。

我究竟做错了什么?

bin*_*lse 74

您的命令正在尝试将新文档放入您机器的根目录( /)。您想要做的是将它们传输到您的目录(因为您没有写入权限/)。如果通往您家的路径类似于/home/erez尝试以下操作:

scp My_file.txt user_id@server:/home/erez/
Run Code Online (Sandbox Code Playgroud)

您可以使用快捷方式替换主目录的路径~/,因此以下将具有相同的效果:

scp My_file.txt user_id@server:~/
Run Code Online (Sandbox Code Playgroud)

你甚至可以在远端完全省去路径;这意味着您的主目录。

scp My_file.txt user_id@server:
Run Code Online (Sandbox Code Playgroud)

也就是说,要将文件复制到您的桌面,您可能希望将其传输到/home/erez/Desktop/

scp My_file.txt user_id@server:/home/erez/Desktop/
Run Code Online (Sandbox Code Playgroud)

或使用快捷方式:

scp My_file.txt user_id@server:~/Desktop/
Run Code Online (Sandbox Code Playgroud)

或者使用远程端的相对路径,相对于您的主目录进行解释:

scp My_file.txt user_id@server:Desktop/
Run Code Online (Sandbox Code Playgroud)

正如@ckhan 已经提到的,您还必须交换参数,它必须是

scp FROM TO
Run Code Online (Sandbox Code Playgroud)

因此,如果要将文件My_file.txt从服务器复制user_id@server到桌面,则应尝试以下操作:

scp user_id@server:/path/to/My_file.txt ~/Desktop/
Run Code Online (Sandbox Code Playgroud)

如果文件My_file.txt位于服务器上的主目录中,您可以再次使用快捷方式:

scp user_id@server:~/My_file.txt ~/Desktop/
Run Code Online (Sandbox Code Playgroud)


小智 14

什么固定的拒绝“权限”对我来说,在远程服务器上,更改文件夹的所有权根:(!这可当你发送文件到非root用户发生,目录的所有者是root) 在远程机器(复制目标):

sudo chown (your username) (remote folder)
Run Code Online (Sandbox Code Playgroud)

另外可以肯定的是,启用远程文件夹的所有权限:(并非总是必要的):

sudo chmod 777 (remote folder)
Run Code Online (Sandbox Code Playgroud)


PJ *_*net 13

我来这里是为了“使用 scp 传输文件:权限被拒绝”,因为我遇到了同样的错误。

就我而言,使用 scp 下载的文件会覆盖 root 拥有的文件,而我不是 root。简而言之,检查被覆盖文件的所有权。

  • 在这种情况下,这是因为他试图写入 `/Home` 而不是 root,所以他在 `~/` 之外没有写访问权限 (2认同)

小智 5

这似乎是许可问题

该文件可能没有读取权限,因为它作为源帐户传送到目标服务器。

您需要确保源文件具有所需的权限,尤其是读取权限

-rw-r--r--

第 744 章

然后将文件 scp 到目的地。这将得到解决

  • `-rw-r--r--` 是 644,而不是 744。对实际上不可执行的文件设置可执行权限会导致问题。 (3认同)