Модификация ssh_config с помощью augtool

Это файл по умолчанию / etc / ssh / ssh_config, который содержит #ForwardX11 no, который я хотел бы изменить, поэтому я делаю

augtool set "/files/etc/ssh/ssh_config/ForwardX11" yes

который терпит неудачу, но это добавляет ForwardX11 yes после Host *

augtool set "/files/etc/ssh/ssh_config/Host/ForwardX11" yes

Вопрос

  • Почему не augtool раскомментировать #ForwardX11 no?
  • Почему я должен указать .../Host/...?
  • Почему GSSAPIAuthentication yes а также ForwardX11Trusted yes отсутствует в выводе ниже?
[root@localhost ~]# augtool ls "/files/etc/ssh/ssh_config"
#comment[1] = $OpenBSD: ssh_config,v 1.27 2013/05/16 02:00:34 dtucker Exp $
#comment[2] = This is the ssh client system-wide configuration file.  See
#comment[3] = ssh_config(5) for more information.  This file provides defaults for
#comment[4] = users, and the values can be changed in per-user configuration files
#comment[5] = or on the command line.
#comment[6] = Configuration data is parsed as follows:
#comment[7] = 1. command line options
#comment[8] = 2. user-specific file
#comment[9] = 3. system-wide file
#comment[10] = Any configuration value is only changed the first time it is set.
#comment[11] = Thus, host-specific definitions should be at the beginning of the
#comment[12] = configuration file, and defaults at the end.
#comment[13] = Site-wide defaults for some commonly used options.  For a comprehensive
#comment[14] = list of available options, their meanings and defaults, please see the
#comment[15] = ssh_config(5) man page.
#comment[16] = Host *
#comment[17] = ForwardAgent no
#comment[18] = ForwardX11 no
#comment[19] = RhostsRSAAuthentication no
#comment[20] = RSAAuthentication yes
#comment[21] = PasswordAuthentication yes
#comment[22] = HostbasedAuthentication no
#comment[23] = GSSAPIAuthentication no
#comment[24] = GSSAPIDelegateCredentials no
#comment[25] = GSSAPIKeyExchange no
#comment[26] = GSSAPITrustDNS no
#comment[27] = BatchMode no
#comment[28] = CheckHostIP yes
#comment[29] = AddressFamily any
#comment[30] = ConnectTimeout 0
#comment[31] = StrictHostKeyChecking ask
#comment[32] = IdentityFile ~/.ssh/identity
#comment[33] = IdentityFile ~/.ssh/id_rsa
#comment[34] = IdentityFile ~/.ssh/id_dsa
#comment[35] = Port 22
#comment[36] = Protocol 2,1
#comment[37] = Cipher 3des
#comment[38] = Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc
#comment[39] = MACs hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160
#comment[40] = EscapeChar ~
#comment[41] = Tunnel no
#comment[42] = TunnelDevice any:any
#comment[43] = PermitLocalCommand no
#comment[44] = VisualHostKey no
#comment[45] = ProxyCommand ssh -q -W %h:%p gateway.example.com
#comment[46] = RekeyLimit 1G 1h
Host/ = *

1 ответ

Решение

У Augeas нет понятия (не) комментировать. Это только позволяет вам управлять записями из файла, используя дерево, которое отображает их. Вы можете эмулировать раскомментирование записи, вставив новую запись сразу после (или до) комментария и удалив комментарий, но Augeas не сделает этого автоматически.

Когда Augeas устанавливает значение, он изменяет значение существующего узла, если он может его найти, или создает новый узел (в конце дерева) в противном случае. Однако порядок узлов в дереве имеет значение, и создание записи для глобальной настройки после Host узел не действителен. Так что вам нужно вставить свой новый узел перед первым Host запись:

ins ForwardX11 before Host[1]
set ForwardX11 yes

Вы также можете установить его внутри Host запись, если вы предпочитаете, хотя это не является строго эквивалентным (см. man ssh_config):

set Host[.='*'] *    # Ensure the Host entry exists
set Host[.='*']/ForwardX11 yes

Что касается двух пропущенных записей, они не появляются в вашем выводе, потому что ls не является рекурсивной командой использование print если вы хотите увидеть дерево рекурсивно.

Другие вопросы по тегам