
Как использовать функцию Port Knocking с помощью autoSSH?
Мое текущее решение — запустить скрипт —
#! /bin/bash
while :
do
knock myhomecomputer.com 64001 && sleep 1 && knock myhomecomputer.com 64002 && sleep 1 && knock myhomecomputer.com 64003 && sleep 1 && knock myhomecomputer.com 64004
ssh -R 65522:localhost:22 myhomecomputer.com
done
Приведенный выше скрипт помещается в crontab как -
@reboot screen -dmS reverseSSH /home/user_me/reverse_ssh_4_myhomecomputer
Чем такой скрипт отличается от autoSSH? Какие дополнительные случаи обрабатывает autoSSH?
Идея состоит в том, чтобы запустить указанный выше скрипт или autoSSH на моей лабораторной машине за университетским брандмауэром, чтобы я мог зайти на него по SSH из дома. Мой домашний компьютер столкнулся с огромным количеством атак методом подбора SSH, поэтому мне пришлось поместить его за брандмауэр с активацией последовательности стука. Есть ли лучший способ справиться с этим?
Приведенный выше скрипт работает, и я могу подключиться по SSH к университетскому компьютеру, используя следующую команду на моем домашнем компьютере:
ssh -p 65522 localhost
решение1
Вот как я обошёл эту проблему
Я отредактировал
~/.ssh/config
на лабораторной машине, добавив следующееhost myhomecomputer.com HostName myhomecomputer.com user user_me IdentityFile ~/.ssh/user_me.openSSH host myhomecomputer HostName myhomecomputer.com user user_me IdentityFile ~/.ssh/user_me.openSSH ProxyCommand bash -c 'source knock_myhomecomputer_ssh; ssh -TN -R 65522:localhost:22 myhomecomputer.com'
Обратите внимание на имена —
myhomecomputer
(псевдоним/ярлык) иmyhomecomputer.com
(фактический хост).Это
knock_myhomecomputer_ssh
как -SLEEP_T=0.75 knock myhomecomputer.com 64001 && sleep $SLEEP_T && knock myhomecomputer.com 64002 && sleep $SLEEP_T && knock myhomecomputer.com 64003 && sleep $SLEEP_T && knock myhomecomputer.com 64004
Добавил следующее в свой
crontab
@reboot autossh -f myhomecomputer