AllowGroups в файле /etc/ssh/sshd_config

Хорошо, после некоторых исследований я заставил его работать. Позвольте мне объяснить ясно, так что это не проблема для кого-то в будущем с очень распространенным сценарием, как у меня. На приведенном выше рисунке рассмотрим:

  • хост _Мой ноутбук в моей домашней локальной сети
  • host _B мой ssh-сервер с общедоступным IP-адресом
  • host _C моя машина с Linux в локальной сети в моем офисе.

Чтобы получить доступ к рабочему столу хоста _C с хоста _A на Mac, выполните следующие действия:

  1. На хосте _Откройте терминал и выполните команду :ssh -t -L 5901:localhost:5901 user@host_B.net; после ввода пароля вы окажетесь на хосте _B

  2. Теперь откройте другой терминал и выполните:ssh user@host_B.net; введите пароль и затем выполните:ssh user@host_C; введите этот пароль, и вы окажетесь на хосте _C. Теперь запустите команду на хосте _C:ssh -t -R 5901:localhost:5901 user@host_B.net. Вот и все.

Теперь на Mac откройте Finder, выберите меню goи нажмите connect to server. Введите vnc://127.0.0.1:5901, введите пароль по запросу, и вы получите рабочий стол.

1
06.03.2020, 19:18
1 ответ

Один из способов сделать это — сначала сопоставить строку AllowGroups, а затем, если эта строка не содержит «my _unix _admins», выполнить замену конца -из -строки, которую вы уже было:

sed '/^AllowGroups/ { /my_unix_admins/ !s/$/ my_unix_admins/; }' /etc/ssh/sshd_config > /etc/ssh/sshd_config.new

Это использует фигурные скобки для группировки поиска «мои _unix _admins» внутри совпадения AllowGroups. Другой важной особенностью здесь является!инверсия , которая выполняет функцию замены s// только в строках, которые не соответствуют предыдущему диапазону (здесь, /my _unix _admins/ поиск по шаблону ).

Я сделал ссылку на онлайн-руководство GNU sed, предполагая, что вы используете GNU sed, но фигурные скобки и функция инверсии указаны в POSIX , так что вы также можете проконсультироваться с местным специалистом. страница. Единственной не -функцией POSIX вашей исходной команды была опция -i, которую поддерживает GNU sed.

Единственный крайний случай, который я могу себе представить, это если бы у вас была группа с именем «астрономия _unix _admins» или «мои _unix _admins _на _марсе» в строка AllowGroups; тогда простое совпадение шаблона /my _unix _admins/ будет ложным совпадением. Чтобы избежать возможных ложных совпадений,вы можете использовать GNU sed и включить расширенные регулярные выражения (для чередования |)с опцией -Eи использовать:

sed -E '/^AllowGroups/ { / my_unix_admins( |$)/ !s/$/ my_unix_admins/; }' < /etc/ssh/sshd_config > /etc/ssh/sshd_config.new

Два изменения::

  • требует начального пробела перед именем группы --, что будет верно, если это первая группа в списке или где-либо еще в списке.
  • требуется либо завершающий пробел (, который предотвратит ложные совпадения в середине строки ), либо конец -маркера строки -(, который позволяет группе быть последней в строка ).
0
28.04.2021, 23:21

Теги

Похожие вопросы