Копировать файлы через SSH без использования SCP?
В настоящее время я знаю о SCP и SSH. Бывают случаи, когда я выполняю какую-то работу в файле, который мне нужно загрузить локально для работы с ним. Что вызывает:
Распечатать рабочий каталог / путь
Получить имя файла
Запустите новое окно терминала и выполните
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 без пароля, чтобы избежать ввода паролей, если вы еще этого не сделали.