регулярные выражения и sed могут помочь в таких вещах.
sed -re 's/^(PasswordAuthentication)([[:space:]]+)no/yes/' -i.`date -I` /etc/ssh/sshd_config
в моей системе Debian это переключит PasswordAuthentication no to PasswordAuthentication yes, независимо от количества пробелов между ключом и значением.
он заменит опцию в файле (редактирование на месте) при создании резервной копии исходного файла с суффиксом, названным датой (sshd_config.2014-05-28).
переключить места для да и нет для переключения в другую сторону.
выражение для удаление ведущего # что-то вроде этого:
sed -re 's/^(\#)(PasswordAuthentication)([[:space:]]+)(.*)//'
-и для вставки ведущий #-знак:
sed -re 's/^(PasswordAuthentication)([[:space:]]+)(.*)/#/'
для переключения строки с необязательным #-знак спереди (спасибо Barlop):
sed -re 's/^(\#?)(PasswordAuthentication)([[:space:]]+)no/yes/'
во всех этих выражениях можно изменить PasswordAuthentication на любой другой параметр, который вы хотите изменить-вероятно, даже сделать его ключом в сценарии оболочки и сделать "инструментом переключения опций sshd".
Sed и regex это все весело и игры, но я конечно, Валентин прав в отношении управления конфигурацией, если у вас много систем. Лично я просто использую etckeeper / bazaar на нескольких системах, которые очень редко меняются - это не управление конфигурацией, но это дает мне управление версиями, поэтому я могу вернуть рабочую конфигурацию после того, как я напортачил с regex и sed -i. :)