В SSH, как мне подключиться к моей локальной системе?

129

Я sshзашел в каталог моего веб-хостинга и tarзагрузил веб-приложение. Когда я пытаюсь mvк ~/mydirectory/backupsили /home/mydirectory/backups, он определяет «дом» , как мой корень на хостинге , что я ssh'ed в.

Как мне mv в ssh на локальный диск, пока он находится внутри системы хоста?

JeanSibelius
источник
С какой ОС вы подключаетесь?
Зоредаче

Ответы:

181

Перво-наперво: ssh - это способ удаленного входа на другой компьютер. Оболочка (командная строка), которую вы получаете после ssh, (в значительной степени) такая же, как если бы вы открыли xterm на удаленной машине. Если не предлагает такой способ перемещения файлов.

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

Использование scp Чтобы скопировать с локального компьютера на удаленный, введите на локальном компьютере:

scp /tmp/file user@example.com:/home/name/dir

(где / tmp / file можно заменить любым локальным файлом, а / home / name / dir - любым удаленным каталогом)

Чтобы скопировать с удаленного компьютера на локальный, введите на локальном компьютере:

scp user@example.com:/home/name/dir/file /tmp

Используйте sshfs. Это немного сложнее, но гораздо, намного приятнее (когда интернет-соединение обоих компьютеров хорошее. Если нет, придерживайтесь scp)

Вы можете «связать» каталог с удаленного компьютера с (пустым) каталогом локального компьютера. Скажем, вы «связываете» / some / remote / dir с удаленного компьютера с / home / youruser / remotecomp на вашем компьютере. Если на удаленном компьютере есть файл / some / remote / dir / file, вы можете увидеть его в / home / youruser / remotecomp / file. Вы можете копировать и mv как обычно, и вы даже можете изменять удаленные файлы и директории.

Однако обратите внимание, что когда соединение заканчивается, / home / youruser / remotecomp снова становится пустым каталогом, и вы сохраняете на локальном компьютере только те файлы, которые скопировали в другие каталоги.

Для достижения этой цели:

1) установить sshfs:

sudo apt-get install sshfs

2) создать пустой каталог

mkdir /home/youruser/remotecomp

3) «связать» две директории (правильный термин - монтирование)

sshfs user@server.com:/some/remote/dir /home/youruser/remotecomp

4) Наслаждайтесь

5) "отсоединить" каталоги

fusermount -u /home/youruser/remotecomp

Если на локальном компьютере работает Windows, вы можете найти версии scpдля Windows. Смотрите, например, winscp

josinalvo
источник
Есть ли способ скопировать файл с удаленного компьютера на локальный компьютер через «терминал на удаленном компьютере»? В вашем случае вы использовали терминал на локальной машине. Я говорю о ситуации, когда локальная машина - это Windows, а удаленная - это Ubuntu, и я вошел на удаленную машину через ssh.
Chandresh
Обычно нет. Насколько я знаю, копирование через «терминал на удаленной машине» означает, что вам нужен SSH-сервер на «локальной машине» (я намеренно пропустил это во время ответа, но подразумевается «тот факт, что удаленный компьютер принимает соединения ssh») сказать "тот факт, что на удаленном компьютере работает ssh-сервер")
josinalvo
Тем не менее, вы можете найти «клиенты scp» для Windows. См., Например, winscp.net/rus/download.php
josinalvo
Я люблю sshfsвариант
Фибо Ковальский
Если вы переносите большой файл, используйте rsync поверх ssh с rsync -P -e ssh /tmp/file user@example.com:/home/name/dir. Это потому, что если передача файла не удается на полпути, scpпросто удалите файл. С другой стороны, если вы используете rsyncэту -Pопцию, она сохранит неполный файл на удаленной машине, и при перезапуске передачи она убедится, что то, что уже находится на удаленной машине, соответствует файлу на вашей локальной машине и затем продолжите с того места, где остановилась передача.
Борис
16

Вы можете использовать scpили rsync. В вашей локальной системе:

scp remoteuser@remotehost:/remote/dir/file /local/dir/

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

rsync -avz -e ssh remoteuser@remotehost:/remote/dir /local/dir/

см. rsync(1)и scp(1)справочные страницы для вариантов.

Мухаммед Хедаяти
источник
10

Вы можете использовать защищенную копию scp .

От вас местная оболочка:

scp -C username@webhost:/path/of-the/tar.archive /home/mydirectory/backups/

Этот пример скопирует через ssh из /path/of-the/tar.archive вашего веб-хоста в / home / mydirectory / backups /

Дополнительные опции:

-C : включает сжатие

pl1nk
источник
6

У меня такая же проблема. Вот простое решение: -

  1. Откройте наутилус (файловый менеджер)
  2. Нажмите + Other Locationsвнизу левой панели.
  3. Внизу есть полоса Connect to server. Запишите адрес ssh в поле ввода, например ssh://111.222.333.444/.
  4. Введите свое имя пользователя и пароль в открывшемся диалоговом окне.
  5. После успешной аутентификации вы будете на homeиз удаленного местоположения. Не стесняйтесь перемещать файл здесь и там.
Rushi
источник
Отличный ответ! Простой и наиболее близкий к ответу на реальный вопрос, т.е. как вы работаете с удаленным компьютером ssh. Ответ: ты не можешь, ты делаешь это с локального компьютера. Или это! Вы делаете это графически из своего проводника, чтобы, по крайней мере, пользователю действительно казалось, что вы можете перемещать файлы напрямую с удаленного на локальный.
Kvothe
2

Другие ответы рекомендуют rsyncили scp, оба из которых требуют, чтобы вы знали местоположение файла, который вы хотите скопировать на удаленном компьютере.

Если вместо этого вы захотите поэкспериментировать на удаленной машине, как вы можете ssh, вы можете запустить sftp. Вход на сервер очень похож ssh, но как только вы войдете в систему, введите helpсписок команд - он позволяет вам перемещаться как на локальных, так и на удаленных компьютерах, и легко переносить файлы назад и вперед.

Xanthir
источник
1

Странно, что это невозможно изнутри ssh. В обычном терминале можно отправлять / получать файлы с помощью команд zmodem.

Это помогло Google zssh: http://zssh.sourceforge.net/ . Нужно будет запустить его как обертку к оригиналу ssh.

Виктор Сергиенко
источник