файлы scp "pipe" через промежуточный хост

это своего рода уровень вверх от этот вопрос. Предположим, что я на компьютере A и хотите отправить файлы на компьютер C. Каждый из нас имеет отдельный доступ к хосту B. A и C не может общаться напрямую, и B не удается установить соединение ни с одним из них.

есть ли способ передать большой файл в SSH и создать какой-то поток, который я мог бы рассказать пользователю компьютера C подключиться? Файл больше, чем доступное пространство на B. Мое текущее решение -split большой файл, загружать каждый сегмент по очереди, и когда пользователь в C по окончании загрузки один блок уведомляет меня, я удаляю блок и загружаю следующий.

13
задан Community
25.04.2023 14:26 Количество просмотров материала 3554
Распечатать страницу

2 ответа

если я вас правильно понял, вы хотите отправлять данные с а на С, но ни один компьютер не может подключиться к другому, но они оба могут подключиться к Б. Б не может подключиться ни к кому.

One решение использует переадресацию портов. C может перенаправить от порта на B к их Порту SSH (порт 22):

ssh -R 1088:localhost:22

1088 произвольно, выберите порт, который еще не используется. По умолчанию этот порт доступен только на локальном компьютере, т. е. только процессы, запущенные на Б смогите соединиться к ему.

теперь пользователь на A может подключаться непосредственно к C:

ssh B "ssh -p 1088 localhost"

или, например, эта команда отправит файл из A в C:

cat infile | ssh B "ssh -p 1088 localhost \"cat > outfile\""

в качестве альтернативы, A может перенаправить свой порт, позволяя пользователю на C инициировать копирование.

другое решение заключается в использовании именованных каналов. На B выполните:

mkfifo named_pipe

затем вы можете отправить данные в трубу:

cat infile | ssh B "cat > named_pipe"

эта команда будет висеть пока кто-нибудь не откроет другой конец трубы и не прочитает данные. Например, пользователь на C может сделать:

ssh B "cat named_pipe" > outfile

это отправит файл от A до B В C.

1
отвечен wingedsubmariner 2023-04-26 22:14

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

0
отвечен supercheetah 2023-04-27 00:31

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх