Собрав из остатков железа второй NAS я хочу использовать его для бекапа. В том числе - пересылать инкрементальные (то есть только то, что изменилось) снимки файловой системы. Для этого мне понадобится доступ к бекап NAS без пароля, по ключу. Действительно, при автоматической пересылке среди ночи не очень хочется вводить пароли. Кстати, доступ по ключу является более безопасным, чем по паролю. Так что если делать доступ из Интернет - то путь с ключами правильный.
ВАЖНО. Ниже описан вариант для root, пригодный только в доверенной локальной сети. Во всех остальных случаях (и уж особенно при подключении из Интернет) следует использовать непривилегированного пользователя и при необходимости затем su. По ссылке ниже всё есть.
В сети нашёл горы инструкций. Некоторые - нерабочие, большинство - невразумительные. Наиболее понятный, тем паче русскоязычный, IMHO
этот текст.
Вариант через вебгуй мне тоже не понравился уже тем, что вбивать туда предлагается приватный ключ.
1. Заходим в командную строку главного NAS, генерируем пару ключей - приватный и публичный. Публичный мы отошлём на бекап NAS чтобы по нему нас туда пускали. Приватный будем хранить локально.
nas4free: ~ # ssh-keygen -b 2048 -t rsa
На вопрос про парольную фразу - жмём Enter
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
27:1f:e1:32:16:8f:c0:f4:2f:24:65:92:5e:5a:d9:e8 root@nas4free.local
The key's randomart image is:
+--[ RSA 2048]----+
| . |
| o o |
| = + |
| . = + . |
| o =S..o |
| + E+ . |
| . =o. |
| =oo. |
| . oo |
+-----------------+
Получилась пара ключей - проверяем
nas4free: ~ # ls /root/.ssh
id_rsa id_rsa.pub
2. Отправим публичный ключ на бекап NAS, пусть его IP 192.168.1.33
nas4free: ~ # scp .ssh/id_rsa.pub 192.168.1.33:
Обратите внимание на двоеточие в конце - файл попадёт в домашнюю папку пользователя. в нашем случае - root
Далее набираем "yes" и видим передачу.
The authenticity of host '192.168.1.33 (192.168.1.33)' can't be established.
DSA key fingerprint is b2:d0:99:cb:6e:b2:73:95:4d:f6:b3:02:1d:dc:36:db.
No matching host key fingerprint found in DNS.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.33' (DSA) to the list of known hosts.
root@192.168.1.33's password:
id_rsa.pub 100% 401 0.4KB/s 00:00
3. Положим ключ на место.
Подключаемся, у меня бекап NAS в System|General Setup, поле Hostname назван backupnas - обратите внимание на изменение системного приглашения. Создаём папки и файлы.
nas4free: ~ # ssh 192.168.1.33
root@192.168.1.33's password: (тут вводим пароль, по умолчанию - nas4free)
Last login: Fri Feb 28 20:35:11 2014 from 192.168.1.134
Welcome to BackupNAS!
backupnas: ~ # mkdir .ssh/
backupnas: ~ # cat id_rsa.pub >> .ssh/authorized_keys
backupnas: ~ # rm id_rsa.pub
backupnas: ~ # chmod 700 .ssh
backupnas: ~ # chmod 600 .ssh/authorized_keys
4. Переподключаемся - пускает по ключу
backupnas: ~ # exit
logout
Connection to 192.168.1.33 closed.
nas4free: ~ # ssh 192.168.1.33
Last login: Fri Feb 28 20:46:00 2014 from 192.168.1.34
Welcome to BackupNAS!
backupnas: ~ #
5. Осталось в случае embedded установки добиться выживания после ребута. На обоих машинах копируем папку /root/.ssh куда-то на физический диск
backupnas: ~ # cp -a .ssh /mnt/Flash
nas4free: ~ # cp -a .ssh /mnt/Flash
На обоих в System|Advanced|Command scripts добавляем как PostInit команду
cp -a /mnt/Flash/.ssh /root/
6. Осталось перезагрузить машины по очереди и убедиться, что на ssh 192.168.1.33 по-прежнему пускает по ключу.
Ну и забекапить куда-то содержимое /mnt/Flash