Как 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
Другие вопросы по тегам