3

Я знаю, что могу использовать команду scp и копировать любой файл всякий раз, когда могу прийти с ssh-клиентом.

Но давайте посмотрим более подробно. Предположим, я УЖЕ вошел в систему с помощью клиента ssh. Это означает, что я УЖЕ ввел имя сервера, а также имя пользователя и пароль. Также предположим, что я сделал несколько cd дисков. Это означает, что я УЖЕ вошел в каталог назначения.

Я не хочу вводить эти данные снова. Я просто не вижу причин делать какую-либо работу дважды.

Теперь я хочу ЗАГРУЗИТЬ какой-нибудь файл в ТО, где я уже нахожусь.

Возможно ли это сделать?

Во времена телефонных модемов было несколько протоколов, позволяющих серверу инициировать загрузку файлов клиентом. Если я ввел какую-то команду, мой клиент терминала открыл диалог выбора файла, и я смог выбрать файл для загрузки.

Прошли десятилетия. Возможно ли это сейчас в 21 веке?

2 ответа2

1

Я не знаю, проще ли этот метод, чем просто использовать scp, и я собираюсь сделать много предположений о том, какой ssh-клиент вы используете и какую ОС используете на исходном и конечном компьютерах. Я просто надеюсь, что это полезно.

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

  • В командной строке введите ~ C, введите командную консоль ssh:

ssh>

  • Введите -L 4444:localhost:4444, чтобы перенаправить порт 4444 на локальном компьютере на порт 4444 на удаленном компьютере.

ssh> -L 4444:localhost:4444 Forwarding port.

  • Когда вы снова увидите приглашение на удаленном компьютере, введите:

nc -l 4444 > my_file.txt

Это будет прослушивать порт 4444 и отправлять вывод my_file.txt

  • Теперь на вашей локальной машине вы делаете:

nc localhost 4444 < my_file.txt

И это отправит my_file.txt по перенаправленному туннелю ssh на удаленный компьютер, а netcat (команда nc) направит его в файл на удаленном компьютере. Если вы хотите перенести весь каталог, используйте tar и перенаправьте на стандартный ввод и стандартный вывод. (man tar твой друг).

1

Если вы используете что-то вроде SecureCRT (Windows) или iTerm2 (Mac), вы можете использовать Zmodem для передачи файлов назад и вперед без использования scp/nc/etc. Я использую это для быстрого перемещения файлов назад и вперед без необходимости открывать второй сеанс. На сервере Unix должен быть установлен пакет lrzsz - в некоторых дистрибутивах он установлен по умолчанию, а в некоторых нет.

Если вы используете SecureCRT, вы можете просто запустить «sz filename.txt», и передача начнется автоматически; при запуске "rz" появится окно выбора файла. Если вы используете iTerm2, вам нужно выполнить небольшую настройку, чтобы он заработал, начиная с установки пакета lrzsz (через Homebrew или другой менеджер пакетов), а затем настройте iTerm2 для прослушивания последовательности символов Zmodem. Это описано здесь: https://github.com/aurora/iterm2-zmodem

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .