Как SCP файл (ы) из виртуальной машины Ubuntu на удаленный веб-хост?
Я пытаюсь передать некоторые файлы с моей локальной виртуальной машины Ubuntu 10.04 (работающей на платформе Windows Vista) на мой удаленный веб-хост. SSH включен на их конце, и я смог войти через командную строку, поэтому я знаю, что использую правильный порт #. Вот что я попробовал:
Я захожу на веб-хост через SSH shell. Затем в командной строке "remoteuser@remotehost" я набираю:
scp -P PORT# -r myuserid@127.0.0.1:/~/fromFolder/ ~/public_directory/toFolder/
где PORT#
фактический порт # как 22
Меня попросили myuserid@127.0.0.1
пароль, но он не будет принимать пароль, который я обычно использую с этой учетной записью localhost.
Каков наилучший способ использования scp
? Должен ли я войти на удаленный хост через SSH, а затем запустить scp
в командной строке remoteuser@remotehost$
или мне просто запустить SCP с моего локального хоста?
1 ответ
Правильный синтаксис будет примерно таким:
scp -P 234 -r ~/local/directory remoteusername@remotehost.com:/remote/directory
Код, который вы показали, пытается скопировать файлы с вашего локального компьютера, доступного через localhost, на ваш локальный компьютер, к которому осуществляется прямой доступ
ОБНОВЛЕНИЕ: если вы пытаетесь выдать scp
команда из сеанса ssh на удаленном хосте, чтобы скопировать файлы обратно в вашу Ubuntu virtualbox, тогда я боюсь, что это не невозможно в большинстве случаев - то есть, скорее всего, экземпляр Ubuntu virtualbox не может быть подключен из внешнего мира, если вы не сделали некоторые настройки (например, настройка адаптера с мостовым соединением в вашей хост-ОС, настройка переадресации портов на модеме и т. д.). Более того, IP-адрес, который вы пытаетесь использовать, - 127.0.0.1 - является адресом "локальной петли" и доступен только с той же машины. Т.е. когда вы запускаете команду на сервере, этот IP относится к серверу.
Поэтому я все же предлагаю вам использовать синтаксис, который я показал выше - просто имейте в виду, что "локальный" в команде означает "компьютер, на котором у вас открыт сеанс терминала", а не физический компьютер, на котором вы сидите.
Пример: если вы хотите скопировать файл с одного сервера на другой:
# copy a file from local machine to server1.com
user@local-machine# scp ./somefile.txt user1@server1.com:/home/user2
# copy a file from server1.com to server2.com
user@local-machine# ssh user1@server1.com
user1@server1# scp ./somefile.txt user2@server2.com:/home/user2
user@server1# logout
# copy a file from server2.com to server1.com
user@local-machine# ssh user2@server2.com
user2@server2# ls
somefile.txt otherfile.txt
user2@server2# scp ./otherfile.txt user1@server1.com:/home/user1
user2@server2# logout
# can't copy a file TO local-machine because it's not accessible from internet