SSH SCP Локальный файл для удаленного в Терминале Mac Os X

90

Я пытаюсь скопировать локальный файл magento.tar.gz с моего локального компьютера на удаленный сервер, используя SSH через VPN. Это подключение к внутреннему IP-адресу виртуальной машины, который я использовал здесь как xx.xxxx.

У меня есть полный доступ sudo к учетной записи SSH, поэтому проблем с копированием не должно возникнуть. Я пробовал следующее:

Я пробовал следующее (файл magento.tar.gz уже находится в локальном корневом каталоге)

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

Это просит меня ввести мой локальный пароль. Потом возвращаетсяcp: user@xx.x.x.xx/var/www: Not a directory

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

Возвращает то же самое.

Нужно ли мне где-нибудь включать SSH?

Нужно ли мне сначала подключаться к сайту через SSH?

Боковое примечание: мне удалось подключиться через SSH к серверу, перейти в каталог, создать папку и удалить ее с помощью и sudo mkdirт. Д., Поэтому у меня определенно есть разрешения.

Джеймс
источник

Ответы:

204

Сначала вам нужно добавить :после IP-адреса, чтобы указать, что путь следующий:

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

Я не думаю , что вам нужно . В этом случае это не влияет на удаленную машину, только на локальную команду.sudoscp

Затем, если ваш user@ xx.xxxx не имеет доступа на запись, /var/wwwвам нужно сделать это в 2 раза:

Скопируйте на удаленный сервер в вашу домашнюю папку ( :представляет вашу удаленную домашнюю папку, используйте :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
JScoobyCed
источник
Спасибо. Я пробовал это с двоеточием, но получил отказ в разрешении - мне сообщили, что у меня есть полный доступ к sudo, поэтому разрешения не должны быть проблемой.
Джеймс
1
Благодарность!!! Мне пришлось использовать SSH-пульт и pwd, чтобы узнать, в какой каталог по умолчанию я попал, и это было / home / username - scp magento.tar.gz user@xx.xxxx: / home / username / помогло!
Джеймс
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
легенда12
источник
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 Tornblad