Прямая передача файла между двумя компьютерами через Интернет

27

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

Я хочу сделать это, не требуя от конечных пользователей подключения к третьему серверу, потому что таким образом данные будут проходить через машину xyz.com, что может замедлить передачу и создать угрозу безопасности.

Я хотел бы избежать настройки всего FTP-сервера только для случайной передачи файлов. До сих пор я обнаружил JetBytes , Click2Copy и PipeBytes . Эти веб-сервисы должны упростить передачу. Однако трафик проходит через их серверы, поэтому они не соответствуют тому, что я хочу.

Я хочу, чтобы перевод был прямым между клиентом и мной. Шифрование было бы хорошей дополнительной функцией.

Я знаю, что для этого мне нужно открыть один порт на моем компьютере и настроить перенаправление битовых портов на моем маршрутизаторе. Тем не менее, NAT-обход также будет хорошим дополнением.

Мой вопрос:

Есть ли простой способ для одной прямой сквозной передачи файлов между двумя компьютерами, избегая третьих лиц? (если возможно, с шифрованием и прохождением NAT)

Benoit
источник
Вы ищете решение, которое передает только через HTTP или что?
Pacerier
Лично я использую заключенный в тюрьму веб-сервер chroot с включенной автоматической индексацией, чтобы делиться файлами с другими людьми. Тогда у меня есть анонимная учетная запись ftp, которую люди могут использовать для отправки мне файлов. Решение Skype - это то, что я скажу маме, если она хочет поделиться с кем-то файлом. Это лучше, чем использовать вложения электронной почты, по крайней мере.
isuldor
1
может быть, программа прямой передачи файлов sourceforge.net/projects/file-transfer - с открытым исходным кодом, перетаскивание, обещание опционально upnp (на xp?), teredo, безопасные соединения и автоматическое обнаружение (необязательные вещи нуждаются в
галочках на
Можем ли мы открыть это? Я перефразировал это, чтобы реализовать предложения
n611x007

Ответы:

13

Самый грязный способ, если вы используете * nix, - это использовать netcat ( nc) для пересылки файла на удаленный хост. Но если вам нужно шифрование, вы также можете использовать SCP / SSH.

Вы должны понимать, что если какая-либо сторона находится за NAT и вы не хотите настраивать переадресацию портов, то невозможно установить прямое соединение, не подключившись сначала к стороннему серверу. Сервер не обязательно должен ретранслировать трафик (см. Http://en.wikipedia.org/wiki/UDP_hole_punching ), и большинство из них этого не делают, поскольку пропускная способность является дорогостоящей.

Например, Skype попытается использовать многие методы обхода NAT для установления прямого соединения, прежде чем вернуться к ретрансляции трафика через свои супер узлы. (Skype очень P2P-сеть.)

Что касается проблемы с учетной записью. Я думаю, это неизбежно. Все методы потребуют некоторой конфигурации или настройки, которые обычно сложнее, чем регистрация учетной записи.

billc.cn
источник
3
cryptcat - это netcat с шифрованием
подмастерье, выродок
Netcat также доступен для Windows. Мне нравится этот способ.
Бенуа
Для справки, Skype больше не использует P2P: support.skype.com/en/faq/FA12381/what-is-the-cloud
Radderz
10

Решения на основе WebRTC дают то, что вам нужно, возможно, в самой простой форме. Вы подключаетесь к стороннему веб-сайту, но это только для подключения пиров, а не для передачи файлов.

Примеры услуг:
https://www.justbeamit.com/
https://www.sharedrop.io/

РЕДАКТИРОВАТЬ: Я понимаю, что это не отвечает всем требованиям OP, но есть другое, очень полезное решение: Firefox Send . Используя это, вы загружаете свой файл на сторонний сервер в зашифрованном виде. Сервис дает вам URL, которым вы можете поделиться с другими. URL-адрес также содержит ключ для расшифровки файла. Затем они могут скачать файл. Файл автоматически удаляется после определенного количества загрузок или через 24 часа. Сервер никогда не видит ключ и поэтому не может расшифровать файл. Преимущество использования стороннего сервера заключается в том, что сторонняя сторона и загружающая сторона не должны одновременно находиться в сети.

с.в.
источник
В моей корпоративной (высокозащищенной) сети reep.io не работал, а justbeamit.com работал! Я ожидал бы, что обе службы будут работать одинаково, поскольку они основаны на технологии WebRTC, но кажется, что это немного сложнее. Большое спасибо за подсказку!
Габорист
8

Вы можете синхронизировать файлы между удаленными компьютерами, используя rsync. Эта утилита доступна для Windows в Cygwin , или вы можете установить ее с помощью предварительно упакованного cwRsync .

Я оставлю свой предыдущий ответ здесь без изменений, но, учитывая недавние откровения о АНБ, я бы больше не рекомендовал Skype для безопасной передачи файлов.

Вы можете отправить файл напрямую другому человеку, используя Skype . Скайп иногда даже работает, когда оба пользователя находятся за NAT. Если вы достаточно осторожны, чтобы открыть порт на своем маршрутизаторе, это увеличит вероятность согласования прямого соединения.

В более широком смысле, многие программы чата включают механизм совместного использования / отправки файлов. Большинство не предоставляют шифрование по умолчанию, как Skype. Но если вы и ваш получатель используете один и тот же клиент чата, у вас есть «простой инструмент» для обмена файлами.

isuldor
источник
Спасибо за этот ответ. Проблема здесь в том, что мне всегда приходится полагаться на третью компанию, специально для этого создавать учетную запись, и эта услуга может нарушиться или условия обслуживания могут измениться. Если возможно, я бы хотел этого избежать. Однако я не знал, что Skype может договориться о прямом соединении. Тем не менее из вашего ответа я могу сделать вывод, что это не всегда так?
Бенуа
@Benoit - у меня никогда не было скайпа, который не мог отправить файл. Единственный трафик, который идет к серверам скайпа, является тем, чтобы установить соединение. Все данные передаются между вами и вашим получателем. Что касается условий предоставления услуг, то это очень просто, так как обмен файлами является центральной частью скайпа.
Nifle
@Benoit Skype всегда использует прямые подключения; даже база пользователей скайпа распространяется. Преимущество Skype заключается в его сквозном шифровании; Skype не может видеть данные, которые вы передаете. (+1 между прочим)
белка
5

Если вы используете Linux / Unix ssh - это безопасный способ передачи файлов в модели клиент-сервер. перенаправление портов необходимо на входящих соединениях, если за NAT все же.

0x7c0
источник
3

FTP. Это было вокруг целую вечность. Это небезопасно, черт возьми. И это просто.

Загрузите Filezilla, который может функционировать как сервер и клиент. Убедитесь, что ваш брандмауэр разрешен для исходящих. Загрузите filezilla и подключитесь к серверу filezilla. Передача файла.

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

music2myear
источник
Это также не так надежно. Вам нужны проверки хешей, чтобы убедиться, что вы получили именно то, что отправили. TCP / IP претендует на надежность, но в конце дня не 100%. Например, просто попытался отправить резервную копию размером в несколько гигабайт и обнаружил, что созданный zip-файл содержит ошибки на цели, но не на источнике. Ошибки не отображаются. Хэши для всего хороши, но все равно могут дать вам ложное одобрение. Несколько хэшей каждый по 1 Мбайт каждый лучше. Так что торрент между двумя компьютерами будет лучше для большого файла.
rxantos
FTP действительно тяжело справляется с действительно большими файлами (он никогда не рассматривал использование таких больших файлов, как сегодня, когда он разрабатывался). SFTP - это намного лучше оснащенный протокол для больших файлов, а также намного, намного более безопасный, чем FTP.
MaQleod
3

Однажды я написал сообщение в блоге о передаче файлов со встроенного HTTP-сервера Python . Короче говоря, установите Python, откройте командную строку, cdв каталог с файлами для совместного использования и выполнения python -m SimpleHTTPServer. Очень удобно, если вы работаете в Linux или OS X, потому что Python установлен по умолчанию (его легко установить и в Windows).

Если вы находитесь за NAT, то вам нужно настроить переадресацию портов на вашем маршрутизаторе или что-то еще (что, я полагаю, вы уже знаете).

phunehehe
источник
1
Ссылка на сообщение в блоге переходит на спам-сайт
MFB
@MFB Я предполагаю, что раньше он заходил на его законный сайт, но с тех пор он потерял контроль над сайтом, и теперь он перенаправляет на страницу типа припаркованного домена. Я отредактировал ссылку на данный момент. Для phunehehe, если вы видите это, пожалуйста, прокомментируйте относительно ссылки. Если у вас есть копия сообщения в блоге где-то еще, теперь вы можете отредактировать ее, но будьте осторожны, что намеренное связывание со спамом недопустимо.
nhinkle
наконец я восстановил запись в блоге, обновил :)
phunehehe
2

Веб- сервер, который может выполнять обход UPnP NAT, будет работать, получателю потребуется только веб-браузер. Как бонусное шифрование легко с веб-сервером, просто используйте https.

Вот один пример (Payware 99USD) RaidenHTTPD

Nifle
источник
1

Вы должны проверить http://filesovermiles.com, кажется, делать именно то, что вы хотите. Прямая передача P2P через браузер (flash).

Тревор
источник
3
Каковы преимущества предлагаемого вами решения?
Йохан Карлссон
1

Вы можете попробовать переместить папку с http://www.foldertransfer.com , которая может напрямую передавать файл между двумя компьютерами в Интернете. Он может полностью удовлетворить ваши потребности.

user290488
источник
1

Почему никто не упоминает о передаче IRC DCC? https://en.wikipedia.org/wiki/Direct_Client-to-Client , вы получаете клиент HexChat, устанавливаете его на обоих компьютерах, вводите, скажем, Freenode, а затем создаете канал для присоединения обоих, затем щелкните правой кнопкой мыши на Другой "контакт / ПК" и отправить файл. Старая технология, которая всегда работает, кроме Hyperterminal для прямой телефонной связи, примерно в 1995-1998 годах, DCC была основным способом загрузки музыки и фильмов.

Захария
источник
1

Волшебная червоточина может быть использована для этого. В Ubuntu вы можете установить через apt-get (он также доступен через Python pip):

sudo apt install magic-wormhole

Чтобы отправить файл, просто скажите, что отправить

wormhole send README.md

Это выведет командную строку, которую вы должны запустить на принимающей стороне. Это включает в себя секретный ключ (который также можно прочитать по телефону). Вы не указываете имена компьютеров или IP-адреса. Wormhole устанавливает соединение автоматически и шифрует файлы для передачи.

https://magic-wormhole.readthedocs.io/en/latest/welcome.html

Юха Паломяки
источник