SSH: как изменить значение в конфигурационном файле одной командой

как я могу изменить значение, скажем, PasswordAuthentication на /etc/ssh/sshd_config в командах?

а также, удалите # перед "ключ" я хочу значение. Это не все должно быть в одной команде. Я настраиваю довольно много серверов и помню, где все становится утомительным, поэтому я хочу получить серию команд, которые я могу скопировать, и это делает работу за меня для дальнейшего использования.

примеры значений:

PermitRootLogin no
ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no
UseDNS no
6
задан Brian Graham
19.11.2022 1:24 Количество просмотров материала 2945
Распечатать страницу

4 ответа

регулярные выражения и 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. :)

11
отвечен Kenned 2022-11-20 09:12

Существует ряд вариантов на выбор:

  • марионетка, Cfengine, шеф-повар или любой другой инструмент управления конфигурацией
  • Авгий (augtool -> печать /файлы/etc/протокол ssh/sshd_config в -> затем использовать "набор")
  • sed-i
  • и многое другое

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

5
отвечен Valentin 2022-11-20 11:29

Augeas С помощью утилиты командной строки -augtool - можете настроить /etc/ssh/sshd_config. Например:

augtool --autosave 'set /files/etc/ssh/sshd_config/PasswordAuthentication yes'

для установки всех значений используйте:

SSHD_UsePAM=no
SSHD_UseDNS=no
augtool << EOF
set /files/etc/ssh/sshd_config/PermitRootLogin no
set /files/etc/ssh/sshd_config/ChallengeResponseAuthentication no
set /files/etc/ssh/sshd_config/PasswordAuthentication no
set /files/etc/ssh/sshd_config/UsePAM ${SSHD_UsePAM}
set /files/etc/ssh/sshd_config/UseDNS ${SSHD_UseDNS}
save
EOF
3
отвечен Cristian Ciupitu 2022-11-20 13:46

sshd_config не может быть безопасно отредактирован без полного разбора, потому что он может содержать Match блоки.

Augeas является хорошим вариантом для достижения этой цели, но это не очень легко управлять вставки параметров в нужном месте, когда есть Match блоки уже. Один из вариантов - использовать Puppet с sshd_config Авгий-провайдер:

sshd_config { "PermitRootLogin":
  ensure => present,
  value  => "yes",
}

эта опция дает вам преимущество использования строгого парсера (Augeas с Sshd.lns объектив) и уровень абстракции (Puppet ресурс), который управляет сложностью установки параметров за пределами Match блоков, но и внутри них:

sshd_config { "X11Forwarding":
  ensure    => present,
  condition => "Host foo User root",
  value     => "yes",
}
1
отвечен ℝaphink 2022-11-20 16:03

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх