Конфігураційні файли SSH та контроль версій


Розпочина́ю серію пості́в про SSH з чогось дуже бана́льного. Бана́льно і очевидно, але конфіги SSH можна зберігати в системі контролю версій, і це бува зручно.

У мене є кілька робочих станцій. Кожна має своє ім’я і свої окремі ключі SSH. А от зміст конфігураці́йного файлу .ssh/config на всіх цих робочих станціях однаковий, адже я з цих робочих станцій ходжу на одні й ті самі хости́ з однаковими налаштува́ннями. Цей файл лежить десь в системі контролю версій.

Крім то́го, у мене один загальний .ssh/known_hosts. На мою думку, так робити безпечніше, ніж формува́ти його на кожній робочій станції окремо.

І, нарешті, ще у мене є загальний .ssh/authorized_keys, що включає всі публічні ключі всіх довірених, надійно захищених робочих станцій. Цей файл також потрапляє до менш захищених хостів, типу всяких хмарних віртуа́лок, але вже не через систему контролю версій, а якимось іншим чином.

Невеличка технічна деталь. Як на мій смак, краще робочій каталог репозита́рія не тримати в ~/.ssh, а покласти в окреме місце і спрямувати симлі́нки зі всих цих .ssh/config на my-ssh-repo/config. Зокрема, щоб попри всі .gitignore якось випадково не закомі́тити приватний ключ.