Позвольте несколько удаленных соединений ssh Динамическому переданному порту

За пределами прокрутки настраиваемого решения транспонировать строки со столбцами из командной строки единственный инструмент я когда-либо видел, что это может сделать, это - инструмент, названный иронически transpose.

Установка

К сожалению, это не находится ни в каком repo, таким образом, необходимо будет загрузить и скомпилировать его. Это довольно просто, так как это не имеет никаких дополнительных библиотек, от которых это зависит. Это может быть выполнено как так:

$ gcc transpose.c -o transpose

Использование

Это может обработать простые текстовые файлы легко. Например:

$ cat simple.txt 
X column1 column2 column3
row1 0 1 2
row2 3 4 5
row3 6 7 8
row4 9 10 11

Может быть транспонирован с помощью этой команды:

$ transpose -t --fsep " " simple.txt 
X row1 row2 row3 row4
column1 0 3 6 9
column2 1 4 7 10
column3 2 5 8 11

Эта команда transpose транспонировать (-t) и разделитель полей для использования является пространством (--fsep " ").

Ваш пример

Так как Ваши демонстрационные данные находятся в немного более сложном формате, с ними нужно иметь дело в 2 фазах. Сначала мы должны перевести его в формат это transpose может иметь дело с.

При выполнении этой команды, поместит данные в более горизонтально дружественный формат:

$ sed 's/:/ /; /^$/d' sample.txt \
    | sort | paste - - - - -
title1 A1   title1 B1   title1 C1   title1 D1   title2 A2
title2 B2   title2 C2   title2 D2   title3 A3   title3 B3
title3 C3   title3 D3   title4 A4   title4 B4   title4 C4
title4 D4   title5 A5   title5 B5   title5 C5   title5 D5

Теперь мы просто должны удалить вторичные случаи title1, title2, и т.д.:

$ sed 's/:/ /; /^$/d' sample.txt \
    | sort | paste - - - - - | sed 's/\ttitle[0-9] / /g'
title1 A1 B1 C1 D1 A2
title2 B2 C2 D2 A3 B3
title3 C3 D3 A4 B4 C4
title4 D4 A5 B5 C5 D5

Это находится теперь в формате это transpose может иметь дело с. Следующая команда сделает все перемещение:

$ sed 's/:/ /; /^$/d' sample.txt \
    | sort | paste - - - - - | sed 's/\ttitle[0-9] / /g' \
    | transpose -t --fsep " "
title1 title2 title3 title4
A1 B2 C3 D4
B1 C2 D3 A5
C1 D2 A4 B5
D1 A3 B4 C5
A2 B3 C4 D5

4
12.07.2014, 18:10
2 ответа

Насколько мне известно, SSH сам по себе не проверяет исходные IP-адреса ни при каких обстоятельствах (их все равно можно подделать). Таким образом, вам, вероятно, придется использовать фильтр пакетов на B (например, iptables) и настроить его так, чтобы входящие TCP-пакеты с портом назначения 1235 должны были иметь адрес B в качестве исходного.

0
27.01.2020, 21:00

Используйте параметр -g с SSH, а затем настройте правила брандмауэра, чтобы разрешить подключение к порту только C.

-g      Allows remote hosts to connect to local forwarded ports.

Команда будет выглядеть так:

ssh -g -D 1235 a@A
2
27.01.2020, 21:00

Теги

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