SSH - практически вездесущий протокол удаленного доступа, у него множество возможностей, одна из них - удаленная файловая система (SSHFS, SFTP). Довольно удобно монтировать второй компьютер или рабочую машину, а так же девайсы на android или iOS. Для последнего, правда, необходим JailBreak.
Вот и задумался я, как бы монтировать рабочий компьютер автоматом через SSH, чтобы не поднимать других демонов. Когда-то давно пользовался AutoFS, она, кстати умеет подключать NFS, FTP и, наверняка, что-то еще. Но, насколько я помню, работало не очень стабильно, хотя, быть может, то было такое время или так криво настроено :)
Итак, монтировка монтирование.
Все делается посредством файла /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, соответственно, в системах с другой системой инициализации, все делается как-то иначе.
И чуть не забыл, монтирование происходит по запросу, то есть если к директории нет обращений - соединения не происходит.