Для сетей только с Linux я нахожу SSHFS естественным, стабильным и чрезвычайно быстрым. У меня есть две машины Xubuntu (18.04), использующие общие / домашние папки через SSH.
Вот как настроить sshfs и автоматически переподключиться после перезагрузки, используя fstab без необходимости ввода пароля. Большое спасибо пользователю serverfault kubanczyk за то, как восстановить соединение после удаленной приостановки / возобновления.
Я буду использовать «Local machine - surfbox» для компьютера, к которому вы подключаетесь, и «Remote machine - devbox» для компьютера, к которому вы подключаетесь.
Замените «remoteuser» ниже на имя пользователя, с которым вы входите на Удаленной машине, и «localuser» на имя пользователя, с которым вы входите на Локальной машине. Для проверки имен пользователей введите echo $USER
в терминале на удаленных и локальных компьютерах.
Кроме того, проверьте свой userID или groupID, они оба должны быть 1000.
GroupID: id -g localuser
UserID:id -u localuser
1. Получить IP-адреса ваших локальных и удаленных машин.
hostname -I
Я буду использовать 192.168.1.150 для локальной машины ('surfbox') и 192.168.1.151 для удаленной машины ('devbox')
2. Установите пакеты на локальные и удаленные машины.
sudo apt install sshfs fuse ssh
3. Создайте групповой предохранитель и добавьте к нему localuser
Создать группу: sudo groupadd fuse
Добавьте localuser в группу: sudo usermod -a -G fuse $user
4. Включите "allow_other" в конфигурации предохранителей
Нам понадобится эта опция при монтировании в fstab
Отредактируйте /etc/fuse.conf
с помощью редактора командной строки. Удалите хэштегом ранее user_allow_other
и сохраните.
5. Генерация ключей SSH на локальной машине
Не указывайте пароль при запросе . Просто нажмите Enter, чтобы оставить пустым.
ssh-keygen -t rsa -C youremail@example.com
Ключи хранятся в домашнем каталоге локальной машины / .ssh
6. Перенесите открытый SSH-ключ Локальной машины на Удаленную машину.
ssh-copy-id -i ~/.ssh/id_rsa.pub remoteuser@192.168.1.151
Вам будет предложено ввести пароль для удаленного пользователя на удаленном компьютере. Открытый ключ локального компьютера теперь добавлен в файл ~ / .ssh / authorized_keys на удаленном компьютере.
7. Создайте каталог в папке Local machine / mnt, куда вы будете монтировать папку Remote machine / home.
Выберите любое имя, которое имеет смысл для вашей удаленной машины.
sudo mkdir /mnt/devboxhome
8. Смонтируйте удаленный компьютер / домашний каталог с терминала
Синтаксис для sshfs есть
sshfs [user@]host:[directory] mountpoint [options]
мы используем
sudo sshfs [remoteuser]@192.168.1.151:/home/[remoteuser] /mnt/devboxhome -o allow_other,default_permissions -o identityfile=/home/[localuser]/.ssh/id_rsa
пример: предполагается, что «steve» является именем пользователя как на локальной, так и на удаленной машине
sudo sshfs steve@192.168.1.151:/home/steve /mnt/devboxhome -o allow_other,default_permissions -o identityfile=/home/steve/.ssh/id_rsa
Поскольку вы передали открытый ключ RSA на удаленный компьютер, вам не нужно запрашивать пароль удаленного пользователя.
Вы получите предупреждение о том, что машине не доверяют, и предложит добавить ее. Добавьте удаленный компьютер как доверенный.
9. Проверка: Обзор удаленного компьютера / домашнего каталога
В терминале на Локальной машине вы можете теперь перечислить Удаленный компьютер / домашний каталог в / mnt / devboxhome
cd /mnt/devboxhome
ls
или используйте Nautilus, чтобы просмотреть каталог. Отлично.
10. Включите переподключение после перезагрузки
Мы добавим запись в / etc / fstab, чтобы это произошло. Вам понадобится ваш ID пользователя локальной машины или groupid - смотрите введение, если вы пропустили это. Отредактируйте / etc / fstab с помощью вашего редактора командной строки и добавьте эти две строки в конец / etc / fstab
# Mount devbox at boot
remoteuser@192.168.1.151:/home/[remoteuser]/ /mnt/devboxhome fuse.sshfs default_permissions,user,delay_connect,reconnect,serversliveinterval=15,serveralivecountmax=3,allow_other,identityfile=/home/[localuser]/.ssh/id_rsa,idmap=user,uid=1000,gid=1000 0 0
- delay_connect заставляет ядро ждать, пока сеть не будет запущена, пока не попытается смонтировать каталог на удаленной машине.
- Поскольку мы бежим как корень во время загрузки , мы должны указать файл_ключа , который хранится в Локальный_пользователе домашней директории.
- allow_other - пользователи, отличные от того, кто выполняет фактическое монтирование, могут получить доступ к смонтированной файловой системе.
- idmap = user - только перевод UID подключающегося пользователя
- Реконнект, ServersLiveInterval, ServerAliveCountMax - ssh отправляет контрольные проверки активности . Если
ServerAliveCountMax
последовательные эхо-запросы не выполняются, восстановите соединение.
Пользователь, входящий в систему как Стив на локальных и удаленных машинах, будет иметь:
steve@192.168.1.151:/home/steve/ /mnt/devboxhome fuse.sshfs default_permissions,user,delay_connect,reconnect,serversliveinterval=15,serveralivecountmax=3,allow_other,identityfile=/home/steve/.ssh/id_rsa,idmap=user,uid=1000,gid=1000 0 0
ВАЖНО : косая черта после удаленного каталога: steve@192.168.1.151: / home / steve /
сохранить / etc / fstab и ....
11. Перезагрузка
Теперь вы должны иметь доступ к каталогу Remote machine / home на локальном компьютере / mnt / devboxhome. В Nautilus вы можете перетащить эту папку на панель Places.
12. Повторите
Повторите те же действия на удаленном компьютере, чтобы сделать каталог / home локального компьютера общим.