Настройка хоста-бастиона для доступа к локальной машине

awk 'BEGIN { FS=OFS="\t"; d["High"]=1; d["Medium"]=2; d["Low"]=3 } { print d[$3], $0 }' file |
sort -t $'\t' -k3,3 -k1,1n | sort -t $'\t' -s -u -k3,3 | cut -f 2-

К сожалению, слова «Высокий», «Средний» и «Низкий» не сортируются по алфавиту в этом порядке, поэтому вместо этого мы добавляем перед каждой строкой целые числа 1, 2 и 3 для соответствующих слов в столбце 3. Это делается скриптом awk. Целое число отделено от исходного содержимого символом табуляции и указывает на тяжесть заболевания (1 — самая высокая ).

Затем мы сортируем измененные данные о заболевании и об этом целочисленном поле, чтобы записи были сгруппированы по заболеванию и упорядочены по тяжести.

Затем мы делаем «уникальную сортировку» только с болезнями в качестве ключа (второйsort). При этом отбрасываются любые повторяющиеся заболевания, и для каждого заболевания у нас остается только самая серьезная запись. -sзаставляет sortиспользовать стабильный алгоритм сортировки, сохраняющий переупорядочивание записей с одинаковыми ключами.

cutв конце удаляет целое число, которое мы ранее добавили с помощью awk.

Конвейер предполагает использование bashдля указания разделителя полей для команд sort. Если bashне используется, вставьте литеральную табуляцию с одной кавычкой вместо использования $'\t'(, вы, вероятно, можете сделать это, нажав Ctrl+VTab).

2
03.01.2021, 17:48
1 ответ

Недавно я проделал то же самое для подключения к IoT-устройствам, подключенным к Интернету через мобильную сеть и, следовательно, под NAT.

Мое решение основано на микроэкземпляре -в Google Cloud. Его IP должен быть постоянным, назовем его server_ip. Кажется, что правила брандмауэра не нужны.

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

ssh -N -R 5757:localhost:22 <server_ip>

где 5757 — это порт прослушивания, который будет открыт на сервере (это может быть что угодно, но только не 1023 ). Это указывает серверу

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

ssh -J <server_ip> -p 5757 localhost

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

Чтобы сделать все более безопасным и плавным, я предлагаю вам использовать аутентификацию на основе ключа SSH -как на сервере, так и на вашем домашнем устройстве. Если вам нужна дополнительная помощь, пожалуйста, прокомментируйте.


И последнее замечание: первая команда(ssh -N -R 5757:localhost:22 <server_ip>)не должна быть завершена, поэтому вы должны запустить ее с помощью nohupили через службу. Я предпочитаю последнее решение, вот мой служебный файл:

[Unit]
Description=Reverse SSH to GCL on port 5757
After=network.target

[Service]
Type=simple
User=flynn
ExecStart=/usr/bin/ssh -N -R 5757:localhost:22 <server_ip>
Restart=always
StartLimitInterval=30

[Install]
WantedBy=multi-user.target
2
18.03.2021, 22:38

Теги

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