Автоматическое монтирование файловой системы по SSH в Linux

SSH — практически вездесущий протокол удаленного доступа, у него множество возможностей, одна из них — удаленная файловая система (SSHFS, SFTP). Довольно удобно монтировать второй компьютер или рабочую машину, а так же девайсы на android или iOS. Для последнего, правда, необходим JailBreak.

Вот и задумался я, как бы монтировать рабочий компьютер автоматом через SSH, чтобы не поднимать других демонов.

Все делается посредством файла 

/etc/fstab

. Нужно добавить строку:

login@11.22.33.44:/  /mnt/rabota  fuse.sshfs  noauto,x-systemd.automount,_netdev,users,idmap=user,IdentityFile=/home/user/.ssh/id_ecdsa,allow_other,reconnect 0 0

где 

login

 — логин SSH соединения, 

11.22.33.44

 — IP-адрес компьютера, 

/mnt/rabota

 — директория куда будет осуществлено монтирование. Так же есть путь к ключам 

/home/user/.ssh/id_ecdsa

.

Ключи.

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

Если вкратце, на текущем компьютере генерируется связка ключей, например командой 

ssh-keygen -t ecdsa -b 521 -C "$(whoami)@$(hostname)-$(date -I)"

. На выходе получается 2 ключа, публичный и приватный. Публичный нужно залить на удаленный компьютер, проще всего это сделать командой 

ssh-copy-id login@11.22.33.44.

 После этого стоит попробовать зайти на удаленный компьютер, запроса пароля быть не должно.

Вот и все, можно примонтировать каталог 

mount /mnt/rabota

, а после рестарта служб или перезагрузки монтирование произойдет автоматически. Причем в монтировании участвует systemd, соответственно, в системах с другой системой инициализации, все делается иначе.

Монтирование происходит по запросу, то есть если к директории нет обращений — соединения не происходит.