Чистое решение с использованием TXR , без явных манипуляций с состоянием или побочных эффектов, кроме вывода:
@(repeat)
patterna @this
@ (repeat)
patterna @other
@ (fail)
@ (last :mandatory)
patternb @that
@ (end)
@ (output)
patterna @this
patternb @that
@ (end)
@(end)
Выполнение:
$ txr pairs.txr data
patterna this
patternb that
patterna anotherthis
patternb anotherthat
В этом решении мы пытаемся зафиксируйте это требование: ключевое слово patternb
должно быть найдено после строки с patterna
. Это не обязательно должна быть следующая строка. Однако patternb
должен появиться до того, как появится другая строка, которая имеет patterna
: между данной строкой patterna
и соответствующей парной строкой patternb
существует не может быть другой строкой паттерна
.
Внутренняя итерация:
@ (repeat)
patterna @other
@ (fail)
@ (last :mandatory)
patternb @that
@ (end)
сканирует входные данные в поисках двух вещей: совпадения на
patterna @other
или обязательного завершающего совпадения
patternb @that
Однако, если найден шаблонa @other
, следующая за ним директива - @ (fail)
, которая приводит к сбою повтора. (При повторении устанавливается неявный @ (блок)
, а @ (сбой)
приводит к завершению самого внутреннего ограничивающего блока как неудачное сопоставление.)
Если вы беспокоитесь о том, что ваш закрытый ключ будет скомпрометирован, этого не произойдет. Не передается.
Однако открытый ключ.Я полагаю , что вы могли бы идентифицировать кого-то с этим, но это действительно кажется проблемой, только если вы входите на серверы без разрешения.
Вот хорошо написанный пост, в котором более подробно рассказывается о том, как работают SSH-соединения. Соответствующий отрывок:
Сервер может использовать открытый ключ в этом файле для шифрования сообщения с запросом, отправляемого клиенту. Если клиент может доказать, что он смог расшифровать это сообщение, он продемонстрировал, что владеет соответствующим закрытым ключом.
Кроме того, вы не можете получить закрытый ключ из открытого ключа.
Вы должен быть безопасным для отправки открытых ключей на ненадежные серверы; это основной принцип ssh.
Однако в этом году Qualys обнаружила очень серьезную уязвимость , которая позволяла вредоносному серверу украсть закрытые ключи у клиента, настроенного по умолчанию. Это было шесть лет .
Эта конкретная проблема, конечно, теперь исправлена, но она привлекла внимание к тому факту, что даже OpenSSH имеет уязвимости. Факт остается фактом: он предназначен для безопасного подключения к потенциально вредоносным серверам; Требует ли ваша конкретная ситуация более сильной гарантии, чем «следует», - это то, что вы должны определить сами.