ServerAdmin.ru
31.6K subscribers
851 photos
57 videos
23 files
3K links
Авторская информация о системном администрировании.

Информация о рекламе: @srv_admin_reklama_bot
Автор: @zeroxzed

Второй канал: @srv_admin_live
Сайт: serveradmin.ru

Ресурс включён в перечень Роскомнадзора
Download Telegram
Я уже как-то рассказывал про утилиту sshfs, которая позволяет монтировать удалённую файловую систему через SSH. То есть просто монтируете сетевой диск, используя только SSH соединение. Это не очень быстро, так как подключение выполняется в пространстве пользователя, да и в целом по SSH не очень быстрые соединения. Но для некоторых задач это бывает удобно. Доступ по SSH есть практически всегда.

Сделал готовую инструкцию, чтобы можно было быстро всё настроить с аутентификацией по ключам и с systemd юнитом для автомонтирования при загрузке.

Ставим sshfs:

# apt install sshfs

Генерируем и копируем на удалённую машину ключ:

# ssh-keygen -t ed25519
# ssh-copy-id root@10.20.1.6

Можно подключаться с помощью пароля, но для этого его нужно будет интерактивно вводить вручную. Не получится настроить автомонтирование. Хотя если применить утилиту expect, то и это ограничение можно обойти. Но с сертификатом удобнее и проще.

Всё готово, монтируем д иректорию /etc/letsencrypt с сервера 10.20.1.6 к себе в /mnt/letsencrypt:

# sshfs root@10.20.1.6:/etc/letsencrypt /mnt/letsencrypt

Проверяем:

# df -h | grep 10.20.1.6
root@10.20.1.6:/etc/letsencrypt  20G 1.8G  17G 10% /mnt/letsencrypt

Размонтировать можно вот так:

# fusermount -u /mnt/letsencrypt

Создаём службу systemd:

# systemctl edit --force --full sshfs.service

[Unit]
Description=Mount sshfs
After=network-online.target
Wants=network-online.target

[Service]
Type=oneshot
RemainAfterExit=true

ExecStart=sshfs root@10.20.1.6:/etc/letsencrypt /mnt/letsencrypt
ExecStop=fusermount -u /mnt/letsencrypt

[Install]
WantedBy=multi-user.target

Сохраняем, запускаем, добавляем в автозагрузку:

# systemctl start sshfs.service
# systemctl enable sshfs.service

Если хотим отмонтировать, то просто останавливаем:

# systemctl stop sshfs.service

Я показал примеры на тестовом сервере, сделав всё от root. Если будете настраивать куда-то на постоянку, то скорее всего будете запускать под каким-то другим пользователем (хотя кого я обманываю). Через параметры

User=sftp-user
Group=sftp-user

Можно в systemd указать пользователя, под которым всё это будет монтироваться.

Способ подключения дисков через sshfs костыльный, но вполне рабочий. Пользоваться можно. Если есть возможность настроить nfs или smb, с ними будет лучше. Но, например, конкретно для монтирования директории с сертификатами, разницы никакой нет. Сразу подчеркну, что эту задачу можно решать и по-другому. Например, хуками и копированием сертификатов на целевой хост. Решения задачи может быть много. Я показал один из них.

❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.

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

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

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

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

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

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

Показываю 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

Теперь ставим клиент на любое устройство. Он есть под все популярные системы, в том числе Android. Живёт приложение в F-Droid. Разработчик сторонний, не автор 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 - файл, который передаю, можно передать сразу директорию

Ключ --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.

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

🌐 Сайт / Исходники

❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.

#fileserver
👍109👎2