Собственно процесс ssh не сложен. Если все сделано так, как вы хотите, вы просто создаете учетную запись на машине EC2 и держите открытым ssh с помощью autossh с рабочей машины на машину EC2. Другие уже указали на нужную вам статью, start autossh reverse tunnel automatically when network comes up
Есть несколько недостатков перенаправления трафика через EC2-сервер. Одним из них является то, что вы фактически платите за использование и трафик в AWS, другим - медлительность использования ssh-соединений, туннелированных внутри ssh-соединений, третьим - невозможность, но громоздкость туннелирования UDP-соединений поверх TCP ssh-соединений, и, наконец, более длительный RTT, связанный с путешествием пакетов в ближайший центр AWS и возвращением обратно.
Также могут возникнуть юридические проблемы, связанные с тем, что данные или трафик из проектов, над которыми вы работаете, могут покинуть пределы страны.
Другой альтернативой является установка на домашнем маршрутизаторе машины в зоне DMZ, и, например, при доступе к сайту www на машине EC2, который посещается рабочей машиной каждые, скажем, 5 минут, рабочая машина будет устанавливать соединение с вашим IP-адресом. (подробнее об этом позже)
Я бы также предпочел использовать IPsec или OpenVPN, а не ssh. У меня был ssh некоторое время, и процесс правильной настройки туннелей для доступа к различным службам утомителен и громоздок.
Что касается IP-адреса вашей домашней машины. Вам не нужен статический, у вас есть сервисы вроде FreeDNS, которые предоставляют вам запись DNS, сопоставленную с динамическим IP-адресом, который дает вам провайдер.
На самом деле я поступил по-другому. Я перевел кабельный модем/маршрутизатор провайдера в режим моста и подключил к нему Raspberry PI compatible/Lamobo R1 с чипсетом wifi, 5 гигабитными интерфейсами ethernet и портом SATA + SSD диск под управлением Linux.
http://www.bananapi.com/index.php/component/content/article?layout=edit&id=59
Если вы заметили, это очень интересная машина с низким энергопотреблением.
Я подключаюсь к дому с помощью IPsec VPN на базе StrongSwan к своему динамическому IP-адресу, используя DNS-имя, предоставленное FreeDNS.
VPN настроена таким образом, что родные IPsec клиенты моего Macbook Pro и iPhone могут подключаться к VPN без установки бесплатного дополнительного программного обеспечения.
Находясь внутри VPN, и только внутри VPN (и дома) я имею:
У меня также есть чипсет коммутатора в этой коробке, который разделяет две VLAN, внешнее соединение и внутреннюю сеть.
В остальные порты ethernet я подключил Smart TV и Apple TV, так что я могу транслировать на них потоковое видео из любой точки дома.
Моя рабочая машина также настроена на постоянный IPsec-туннель с этим домашним маршрутизатором, так что я могу входить в него в любое время.
Ссылка о постоянном туннеле с StrongSwan:
http://linoxide.com/how-tos/ipsec-vpn-gateway-gateway-using-strongswan/
Вы можете определить команду и использовать ее для своей службы.
define command{
command_name check_ssh_2222
command_line /usr/lib/nagios/plugins/check_ssh -p 2222 $ARG1
}
А потом к вашим услугам:
check_command check_ssh_2222
Мои /etc/nagios/objects/commands.cfg
состояния
define command{
command_name check_ping
command_line $USER1$/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ -p 5
}
, который определяет аргументы между восклицательными знаками, как в приведенном вами примере документации. Это также говорит нам, что
define command{
command_name check_ssh
command_line $USER1$/check_ssh $ARG1$ $HOSTADDRESS$
}
Я думаю, что ваша запись должна быть
check_ssh!--port=xxx22
, так как нет предопределенного аргумента для указания порта, как --port=$ARG1$
в определении, а только общий заполнитель.
Изменить :Я думаю, что локальный хост не должен быть частью строки check_ssh!...
, так как nagios заменит $HOSTADDRESS$
на соответствующий IP-адрес/имя хоста.