SSHFS - SSH File System

Источники

Подготовка SSH на клиенте

  1. Переходим в директорию SSH и исправляем права доступа

    1
    2
    3
    4
    
    cd ~/.ssh
    chmod 0700 ./
    touch authorized_keys
    chmod 0644 authorized_keys
  2. Создание ключа ED25519

    1
    
    ssh-keygen -o -a 100 -t ed25519 -f ./id_ed25519
  3. Копируем публичную часть ключа на другой хост

    1
    
    ssh-copy-id -i ./id_ed25519.pub remote_user@remote_host

    Если ssh-copy-id нет, скопируйте вручную:

    1
    
    cat ./id_ed25519.pub | ssh remote_user@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Монтирование SSHFS в ручную

  1. Устанавливаем пакет sshfs

    1
    
    sudo apt install sshfs
  2. Подготавливаем директорию для монтирования

    1
    2
    
    sudo mkdir /media/my_net_directory
    sudo chown 1000:1000 /media/my_net_directory
  3. Монтируем

    От пользователя root:

    1
    
    sudo sshfs -o allow_other,identityFile=/var/home/local_user/.ssh/id_ed25519 remote_user@remote_host:/remote/path /media/my_net_directory

    От своего пользователя:

    1
    
    sshfs -o idmap=user remote_user@remote_host:/remote/path /media/my_net_directory
  4. Чтобы размонтировать:

    1
    
    sudo umount /media/my_net_directory

Монтирование SSHFS автоматически с помощью fstab

Для работы данного метод необходимо хоть раз смонтировать каждый хост, из под пользователя root. Это добавит подпись хоста в /root/.ssh/known_hosts.

  1. Добавляем в /etc/fstab sshfs директорию

    Открываем файл:

    1
    
    sudo nano /etc/fstab

    Добавляем строчку:

    remote_user@remote_host:/remote/path /media/my_net_directory fuse.sshfs uid=1000,gid=1000,identityfile=/home/local_user/.ssh/id_ed25519,noauto,x-systemd.automount,_netdev,user,idmap=user,follow_symlinks,allow_other,default_permissions 0 0

    • Опции noauto и x-systemd.automount активируют автоматическое монтирование средствами systemd.
    • _netdev сообщает ему, что это сетевое устройство, а не блочное.
    • identityfile - путь до ключа ssh.
    • uid и gid - идентификаторы пользователя. Узнать свои можно командой id.
    • allow_other - открывает доступ к примонтированной директории всем пользователям.
    • А default_permissions заставляет проверять uid/gid пользователя. Это позволяет запретить доступ всем, кто в противном случае имел бы его благодаря allow_other.
  2. Смонтировать директорию из /etc/fstab

    1
    
    sudo mount /media/my_net_directory