Копировать файлы через SSH без использования SCP?

В настоящее время я знаю о SCP и SSH. Бывают случаи, когда я выполняю какую-то работу в файле, который мне нужно загрузить локально для работы с ним. Что вызывает:

  1. Распечатать рабочий каталог / путь

  2. Получить имя файла

  3. Запустите новое окно терминала и выполните scp myName@host:/Path/to/file/fileName.someExt ~/MyLocalPath

Это прекрасно работает, но это большая боль в заднице. Есть ли простой способ скопировать файл с удаленного сервера через SSH, не используя шаги, описанные выше?

Изменить: я ищу способ передачи файлов из командной строки, пока я удален в поле. Таким образом, я могу запускать команды, а не просто копировать файлы.

2 ответа

Решение

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

Сначала убедитесь, что у вас есть fuse Модуль ядра загружен или встроен.

Затем вы можете использовать любой sshfs, который является автономным приложением:

sshfs user@hostname: mountpoint # to mount to mountpoint
fusermount -u mountpoint # to unmount

Кроме того, вы можете использовать GVFS. Если вы находитесь на рабочем столе, просто введите это в файловый менеджер (или используйте gvfs-mount в командной строке):

sftp://user@hostname/

И файловая система будет смонтирована в

$HOME/.gvfs/sftp for user on hostname

Однако, если вы не находитесь на рабочем столе, вам придется начать сеанс D-Bus, прежде чем вы сможете использовать gvfs-mount:

$ dbus-launch 
No protocol specified
DBUS_SESSION_BUS_ADDRESS=XXXXXX
DBUS_SESSION_BUS_PID=YYYY
$ export DBUS_SESSION_BUS_ADDRESS=XXXXXX # copy value from above

Вы можете автоматизировать вышесказанное с помощью сценария оболочки, который вы поставили (!).

Я не знаю ни одного нативного метода, но есть патч "ssh-xfer": http://matt.ucc.asn.au/ssh-xfer/

ssh-xfer - это хакерский, но удобный способ передачи файлов с удаленных хостов на локальный компьютер. Во-первых, вам нужно запустить слегка модифицированную программу агента аутентификации SSH на вашем локальном компьютере. Патчи доступны как для OpenSSH, так и для PuTTY .,,

Я сам не пробовал, так что никаких обещаний здесь. Похоже, что вы должны установить ssh-xfer на удаленном хосте, так что это может не сработать, если вы не являетесь владельцем машины (учетная запись оболочки и т. Д.)

Знайте, что это старо, но вы упомянули, что не можете scp назад из-за брандмауэра. Это может быть легко исправить, если вы можете использовать ssh remote forwarding? Что-то типа ssh -R 22223:localhost:22 user@remote.host станет вашей командой SSH.

Затем вы можете вернуться к исходному серверу через порт 22223 с помощью команды вродеscp -P 22223 test/a user@localhost:~

На удаленном хосте вам потребуется /etc/ssh/sshd_config, установленный в AllowTcpForwarding yes (это часто бывает, но не всегда). Также может быть полезно добавить следующее в ~/.ssh/config

Host homecomputer
Port 22223
User username
HostName localhost

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

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