在Mac Os X终端中,如何使用SSH SCP将本地文件复制到远程主机?

97
我试图使用SSH通过VPN将本地文件'magento.tar.gz'从我的本地计算机复制到远程服务器。这是连接到虚拟机的内部IP,我在这里使用了xx.x.x.xx。
我在SSH帐户上具有完全的'sudo'访问权限,因此复制文件不应该有任何问题。我尝试了以下操作(magento.tar.gz文件已经在本地根目录中):
sudo scp magento.tar.gz user@xx.x.x.xx/var/www/

这要求我输入我的本地密码。之后返回cp:user@xx.x.x.xx/var/www:不是目录

sudo scp /Users/myname/magento.tar.gz user@xx.x.x.xx/var/www/

返回相同结果。

我需要在这里包含SSH吗?

我需要先通过SSH连接到网站吗?

顺便说一下:我已经成功通过SSH连接到服务器,并浏览到目录,使用sudo mkdir等创建了一个文件夹并将其删除,因此我确定我有权限。

4个回答

213

首先,您需要在IP地址后面添加:来指示路径如下:

scp magento.tar.gz user@xx.x.x.xx:/var/www

我认为你不需要使用sudo命令进行scp操作。在这种情况下,它不会影响远程机器,只会影响本地命令。

如果你的user@xx.x.x.xx没有对/var/www的写访问权限,那么你需要分两步操作:

首先将文件复制到远程服务器上的个人文件夹中(:表示您的远程个人文件夹,如需使用子文件夹请使用:subfolder/,或者使用全路径:/home/user/):

scp magento.tar.gz user@xx.x.x.xx:

然后使用SSH移动文件:

ssh user@xx.x.x.xx
sudo mv magento.tar.gz /var/www

谢谢。我尝试使用冒号,但是出现了“权限被拒绝”的错误 - 我已经被告知我有完全的sudo访问权限,所以权限不应该是问题。 - James
1
谢谢!我必须通过SSH远程连接并pwd查找默认目录,发现它是/home/username - 使用scp magento.tar.gz user@xx.x.x.xx:/home/username/就可以了! - James

19

JScoobyCed的回答需要澄清的是,scp命令不能将文件复制到需要管理员权限的目录中。但是,您可以使用scp命令将文件复制到属于远程用户的目录中。

因此,要复制到需要root特权的目录中,您必须首先使用scp命令将该文件复制到属于远程用户的目录中。接下来,您必须使用ssh登录到远程帐户。一旦登录,您就可以使用sudo mv命令将文件移动到所需目录中。简而言之,需要使用以下命令:

使用scp将文件复制到远程用户帐户中的目录(例如Documents目录):

scp /path/to/your/local/file remoteUser@some_address:/home/remoteUser/Documents

接下来,使用ssh登录远程用户的账户,然后使用sudo将文件移动到受限目录中:

ssh remoteUser@some_address
sudo mv /home/remoteUser/Documents/file /var/www

0

注意文件名中也不能有:。我发现我必须要执行mv blah-07-08-17-02:69.txt no_colons.txt,然后scp no-colons.txt server:,最后别忘了在服务器上执行mv。以防万一这是个问题。


1
如果您在本地名称前添加 ./,例如 scp ./blah-07-08-17-02:69.txt server:,那就不是问题了。 - Anders Marzi Tornblad

0

对于scp:

 scp /path/to/your/localFiles remoteUser@remoteAddress:remoteport/home/remoteUser/yourRemoteFiles

rsync工作得很好,而且更好:

rsync -aP /path/to/your/localFiles remoteUser@remoteAddress:remoteport/home/remoteUser/yourRemoteFiles

两个命令也可以反向使用,从远程服务器到本地机器,以及从本地机器到远程服务器


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接