SSH Навигация путаница

Это может быть самый нелепый вопрос, который я когда-либо задавал, но я свободно признаю, что я в тупике. Я пытаюсь переместить некоторые файлы с удаленного сервера на мой локальный компьютер. Я использую Ubuntu, очевидно. Теперь просто для фона у этой машины два разных пользователя. Я вошел как один из них; Джо. Поэтому, когда я щелкаю домашнюю папку в Unity, я получаю свою домашнюю папку joe со всеми моими подпапками и файлами. Одна из папок у меня внутри joe называется удаленной. Внутри пульта находится еще одна папка с именем mail. У меня нет проблем при входе на удаленный сервер с использованием openssh или putty, но я не могу скопировать файлы в joe / remote / mail. По какой-то причине я продолжаю ошибаться и перепробовал все варианты, которые только мог придумать. Частичный список будет ...

/joe/remote/mail
/remote/mail
~/joe/remote/mail
~/remote/mail
remote/mail
joe/remote/mail
/home/remote/mail
/home/joe/remote/mail
/local/home/joe/remote/mail
/local/joe/remote/mail
/local/remote/mail

Вы поняли идею. Все, что я пробую, приводит к одной и той же ошибке: папка xxxx не существует. Я предполагаю, что я спрашиваю здесь только о том, что именно openssh и putty считают текущим каталогом на локальной машине? Я искал онлайн-документацию и не нашел ничего такого, что подсказывало бы мне эту простую и бесконечно полезную информацию.

Кроме того, я пошел дальше и скопировал файлы, используя «.» в качестве пункта назначения, который должен скопировать их в текущий каталог на локальном компьютере. Это сработало! Но ... где они? Они не в корне. Их нет в доме. Они не в Джо. Я потерян.

Отредактировано, чтобы добавить, что я использую scp для копирования файлов, если это имеет значение.

3
задан 12 July 2012 в 08:21

4 ответа

openssh по умолчанию является домашним каталогом данного пользователя.

Попробуйте использовать sudo updatedb, а затем locate filename, чтобы найти любые файлы.

0
ответ дан 12 July 2012 в 08:21

Командная строка scp в принципе выглядит следующим образом:

scp options from to

Пока игнорировать параметры (они все равно являются необязательными); Вы можете прочитать о них, используя man scp.

scp поддерживает локальные и удаленные имена файлов как для части from, так и для to. Локальные имена файлов - это обычные имена файлов или каталогов, например:

 /home/joe/
 /home/joe/remote/mail
 /home/joe/remote/mail/inbox

Удаленные имена файлов состоят из двух или трех частей:

  • (необязательное) имя пользователя
  • Имя удаленного хоста
  • Путь к удаленному хосту

Удаленное имя файла создается с использованием таких частей, как это

 remote-host:/path/on/remote/host
 user@remote-host:/path/on/remote/host

Если вы хотите Скопируйте все файлы из вашего локального каталога "/ home / joe / remote / mail" в каталог "/ opt / backup / joe / mail" на втором сервере "other", используя имя пользователя "admin", вы вводите следующую команду :

 scp -r /home/joe/remote/mail admin@other:/opt/backup/joe/mail

(-r означает рекурсивное копирование каталогов)

Если вы хотите скопировать все файлы из каталога "/ var / spool / mail / joe /" с удаленного сервера «other», используя имя пользователя «admin», в вашу локальную папку «/ home / joe / remote / mail», вы вводите следующую команду:

 scp -r admin@other:/var/spool/mail/joe/ /home/joe/remote/mail 
0
ответ дан 12 July 2012 в 08:21

Большая часть путаницы в сеансе SSH может возникать из-за того, что нам всегда нужно знать о трех местах, чтобы получить правильные команды.

В дальнейшем я буду ссылаться на @home как на место, где мы на самом деле физически сидим, и на @remote как на машину, к которой мы SSH. Как только мы откроем сеанс SSH на удаленной машине, терминал выполнит все следующие команды на удаленной машине. Это визуализируется подсказкой:

  • admin@home:~$: мы сидим в нашей машине home в каталоге HOME

  • user@remote:~S: мы вошли как пользователь в его HOME на удаленном компьютере

Что мы хотим:

В случае, если мы хотим чтобы скопировать файлы из удаленного в нашего дома, мы должны знать, где мы находимся, то есть, на каком компьютере будет выполняться команда:

admin@home:~$ scp user@remote:/remote_path/source.file /home_path/

выполнит команду scp на нашей домашней машине, чтобы скопировать source.file из remote_path на удаленной машине в home_path на нашей домашней машине.

Чего мы, вероятно, не хотим

Если мы выполнили следующее:

admin@home:~$ ssh user@remote
user@remote:~$ scp user@remote:/remote_path/source.file /home_path/

это будет не совсем то, что мы намеревались в этом, тогда scp был выполнен на удаленной машине для скопируйте source.file в /home_path на удаленном компьютере . Чтобы прояснить источник и назначение, мы должны выпустить

user@remote:~$ scp user@remote:/remote_path/source.file admin@home:/home_path/

Тогда source.file действительно будет скопировано в home_path, но только если удаленная машина (где выполняется scp) может открыть сеанс SSH для наша домашняя машина.

Мы могли бы дополнительно расширить использование scp для копирования файлов с одной машины remote1 на другую машину remote2:

admin@home:~$ scp user1@remote1:/remote1_path/source.file user2@remote2:/remote2_path/

Расширенное копирование с использованием rsync

. некоторые ограничения, которые мы можем использовать вместо rsync для копирования файлов. Вот пример того, как это будет вызвано:

admin@home:~$ rsync -avze ssh user@remote:/path/source_dir/ /path/destination_dir

Это точно клонирует все файлы с удаленного source_dir на destination_dir на нашей домашней машине.

0
ответ дан 12 July 2012 в 08:21

С помощью scp вам нужно дать имя удаленной машины, например:

scp /path/to/file-to-copy joe@hostname:/home/joe/remote/mail/

Предполагая, что вы используете SSH на удаленной машине и хотите скопировать пользователя joe на локальную машину , hostname - это имя вашего локального компьютера (также может быть IP-адресом, но в обоих случаях он должен быть доступен с удаленного компьютера).

Вы также можете перевернуть ситуацию (например, использовать с VPS, откуда, вероятно, ваш локальный компьютер будет недоступен) и сделать это с вашего локального компьютера:

scp login@remote-machine:/path/to/file/to/copy ~joe/remote/mail/

OBS: когда вы подключаетесь к компьютеру по SSH, терминал находится на удаленном компьютере и «не имеет представления» о том, что является вашим локальным компьютером, и не может получить к нему доступ без имени хоста. Также вам необходим маршрут для доступа к вашему локальному компьютеру с удаленного (вы можете попробовать его с помощью ping на вашем локальном компьютере).

Когда вы скопировали файлы в «.» они были скопированы в каталог, в котором вы находились в тот момент на удаленном компьютере.

ОБНОВЛЕНИЕ:

Имя хоста - это только имя или имя машины с именем домена, таким как machinename.domain.com, но это будет работать только в том случае, если вы можете подключиться к локальному компьютеру с удаленного компьютера (ваш локальный компьютер имеет публичный IP-адрес ( и DNS-запись), если удаленное соединение осуществляется через Интернет или какое-либо локальное разрешение имен (например, DNS), если оба компьютера находятся в одной сети.

Имя хоста может быть IP-адресом также, если у вас нет имени разрешить систему на вашем компьютере, но компьютер находится в той же сети, или вы работаете с публичными IP-адресами.

Поскольку вы не можете пропинговать свой компьютер с удаленного компьютера, я думаю, что у вас нет способа настроить его доступ. и вы должны использовать обратное решение, предложенное выше, не делать SSH с удаленной машиной и копировать с SCP с вашей машины, поскольку ваша удаленная машина доступна (вы можете использовать SSH на ней).

Чтобы объяснить точку синтаксиса : user @ что-то - это логин на машине, а что-то должно быть именем хоста, а не каталогом. Так что joe @ home / ... ничего не достигнет, так как home - это каталог, и вы не можете войти в каталог.

0
ответ дан 12 July 2012 в 08:21

Другие вопросы по тегам:

Похожие вопросы: