1

我正在尝试将文件从本地桌面上传到服务器,并且正在使用以下命令:

scp myFile.txt cooluser@192.168.10.102:/opt/nicescada/web

遵循结构:scp 文件名 user@ip:/remotePath。

但我得到“权限被拒绝”。我尝试使用 sudo ,但收到相同的消息。我能够从服务器下载到我的本地机器,所以我假设我拥有所需的所有权限。

那行代码有什么问题?

4

2 回答 2

2

尝试并指定完整的目标路径:

scp myFile.txt cooluser@192.168.10.102:/opt/nicescada/web/myFile.txt

当然,仔细检查cooluser有权在该文件夹中写入(不仅仅是读取):755,而不是web父文件夹的 644。

于 2020-02-16T02:38:24.080 回答
2

如果您/desired/path在目标计算机上仅对 root 具有写访问权限,并且如果您在目标计算机上拥有具有 sudo 权限的帐户(通过在sudo命令前加上 a 的超级用户权限),您也可以通过以下方式进行操作:

基于 scp 的选项 1:

  1. 将文件复制到目标计算机上您具有写入权限的位置,例如/tmp
    scp file user@destinationMachine:/tmp
    
  2. 使用以下命令登录您的目标计算机:
    ssh user@destinationMachine
    
  3. 将文件移动到您/desired/path的:
    sudo mv /tmp/file /desired/path
    

如果您有无密码的 sudo 设置,您还可以将第 2 步和第 3 步结合起来

ssh user@destination sudo mv /tmp/file /desired/path

基于 rsync 的选项 2

另一个可能更简单的选择是使用rsync

rsync -e "ssh -tt" --rsync-path="sudo rsync" file user@destinationMachine:/desired/path

添加-e "ssh -tt"在没有 tty 的情况下运行 sudo。

于 2020-04-01T09:23:55.437 回答