Программа croc для передачи файлов через интернет между Windows, Linux, macOS, Android

Для передачи файлов между устройствами существует огромное количество разных способов. В локальной сети отлично работает LocalSend. Я постоянно пользуюсь дома. За пределами локалки через интернет можно передавать файлы через облачные диски. Я использую Яндекс.Диск, но это долго и не очень удобно. Для небольших файлов можно использовать Telegram. Это удобный передатчик файлов, но не всё туда хочется грузить, так как останется навечно.

Онлайн-курс по устройству компьютерных сетей

На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Реклама ИП Скоромнов Д.А. ИНН 331403723315

Что такое croc?

Расскажу про ещё один простой и безопасный способ передачи своих файлов - croc. Это сервис, который можно поднять у себя и безопасно передавать файлы через интернет в шифрованном виде. То есть вы полностью будете замкнуты на свою инфраструктуру. В репозитории скудное описание и если следовать только ему, то использование croc не кажется удобным. Я с ним немного поразбирался и настроил всё так, чтобы было удобно. Сразу показываю итоговый вариант.

Croc - одиночный бинарник, который может работать и как клиент, и как relay сервер. Если вы не настроите свой relay, то croc будет работать через свой – croc.schollz.com.

Установка croc

Берём любую VPS в интернете, настраиваем доменное имя и скачиваем туда croc. Можно автоматом загрузить:

# curl https://getcroc.schollz.com | bash

В macOS, Windows, Arch, Fedora, Gentoo и даже Freebsd croc есть в стандартных репах. Для Debian/Ubuntu почему-то нет.

Создание службы systemd

Показываю systemd unit для запуска croc relay. Обращаю внимание на переменную CROC_PASS=serveradmin. Это пароль для доступа к relay, чтобы пользоваться им могли только вы.

# cat /etc/systemd/system/croc-relay.service
[Unit]
Description=Croc Relay Server
After=network.target

[Service]
Environment="CROC_PASS=serveradmin"
ExecStart=/usr/local/bin/croc relay
Restart=on-failure
User=nobody
Group=nogroup

[Install]
WantedBy=multi-user.target

Запускаем службу и добавляем в автозагрузку:

# systemctl daemon-reexec
# systemctl enable --now croc-relay

Проверяем, что она запустилась, приняла заданную переменную и слушает TCP порты:

# ss -tulnp | grep croc
# cat /proc/2197/environ | xargs --null --max-args=1

Запуск croc как службы

Теперь ставим клиент на любое устройство. Он есть под все популярные системы, в том числе Android. Живёт приложение в F-Droid. Разработчик сторонний, не автор croc.

Передача файлов с помощью croc

Прежде чем начнём передавать файлы, переведём croc в режим работы classic. В нём можно передавать парольные фразы в виде ключей запуска. Это небезопасно, если системой пользуется кто-то ещё, так как ключи можно посмотреть в описании запущенного процесса. В данном случае это некритично, так как мы запустим процесс с ключами ровно один раз и сразу запишем их в конфигурационный файл, чтобы не вводить каждый раз.

# croc --classic
# croc --remember --relay 339127.simplecloud.ru --pass serveradmin send --code serveradmin /file
  • --relay 339127.simplecloud.ru - адрес моего сервера с релеем
  • --pass serveradmin - пароль доступа к релею
  • --code serveradmin - кодовая фраза, которой шифруются передаваемые данные
  • /file - файл, который передаю, можно передать сразу директорию

Передача файлов с помощью crocКлюч --remember позволяет записать все используемые параметры в конфиг ~/.config/croc/receive.json. Теперь можно просто написать:

# croc send /file

После запуска передачи в консоли увидите строку для клиента:

CROC_SECRET="serveradmin" croc --relay 339127.simplecloud.ru --pass serveradmin

Идём на другую Linux машину и выполняем там команду, добавив и туда ключ --remember:

# croc --classic
# CROC_SECRET="serveradmin" croc --remember --relay 339127.simplecloud.ru --pass serveradmin

Параметры тоже будут сохранены и в следующий раз файл можно принять так:

# croc

В таком виде этой штукой пользоваться уже удобно. Я ставил клиента на Windows, пробовал передавать файлы. Нормально работает, конфиг сохраняет. В приложении на Android параметры нужно будет задать через GUI.

Передача файлов в Windows через croc

Заключение

В целом удобное приложение, замыкающее передачу файлов через интернет полностью на вашу инфраструктуру. Настраивается легко. Там есть ещё некоторые параметры, которые можно поменять. Проект старый, довольно популярный (30.4k звёзд), автор его поддерживает.

Углубленный онлайн-курс по MikroTik.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.
Реклама ИП Скоромнов Д.А. ИНН 331403723315

Помогла статья? Подписывайся на telegram канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

Автор Zerox

Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству. Если вам интересно узнать обо мне побольше, то можете послушать интервью. Запись на моем канале - https://t.me/srv_admin/425 или на сайте в контактах.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.
Используешь Telegram? Подпишись на канал автора →
This is default text for notification bar