Вопрос Host to Host SSH Tunnel


Я хочу создать полный туннель SSH между двумя серверами Ubuntu 12.04 (я узнал про SSHuttle, но из-за ошибки при обработке дескрипторов файлов он будет аварийно завершен при высокой нагрузке), очень похоже на IPSEC, но поскольку он мне нужен только для двух что сложность создания полноценной конфигурации IPSEC выглядит излишним.

Я хочу достичь того, что все данные, идущие между сервером 1 и сервером2, будут зашифрованы без необходимости создания тысяч динамических портов SSH.


2
2018-05-21 10:55


происхождения


Спасибо вам, за ваш вопрос я нашел очень хороший блог для администраторов системы. Я тоже отправлю ответ. - rɑːdʒɑ
Что вы подразумеваете под «полным ssh-туннелем»? - Rémi
Полный SSH-туннель, передающий все порты \ соединения \ данные \ сеансы, а не только один порт вперед, например, с параметрами -D SSH для динамических портов - Ba7a7chy
Тогда я бы рекомендовал использовать программное обеспечение VPN (например, openvpn) вместо ssh. настройка openVPN между двумя хостами очень проста. - Rémi


ответы:


Этот ответ принадлежит brandonchecketts,

Предположим, у вас есть два хоста с именем Host-A и Host-B. Теперь мы собираемся создать SSH-туннель между этими двумя и убедиться, что Tunnel постоянно работает.

Конфигурация Необходимо выполнить для Host-A:

Откройте терминал, включите его и вставьте код один за другим.

useradd -d /home/tunnel tunnel
passwd tunnel 
su - tunnel    

следующий шаг - создание ключа SSH

В терминальной пасте как

ssh-keygen

а затем выберите вариант по умолчанию для всех приглашений и скопируйте

cat /.ssh/id_rsa.pub

Теперь на этот раз нам нужно настроить Host-B

Откройте терминал и выполните эти команды.

useradd -d /home/tunnel tunnel
passwd tunnel 
su - tunnel

и в терминальном типе как

mkdir .ssh
vi .ssh/authorized_keys

Он откроет файл в терминале и вставляет вышеуказанный скопированный ключ из Host-A.

Теперь в терминале типа as

vi /home/tunnel/check_ssh_tunnel.sh

и вставить как

createTunnel() {
    /usr/bin/ssh -f -N -L13306:hostb:3306 -L19922:hostb:22 tunnel@hostb
    if [[ $? -eq 0 ]]; then
        echo Tunnel to hostb created successfully
    else
        echo An error occurred creating a tunnel to hostb RC was $?
    fi
}
## Run the 'ls' command remotely.  If it returns non-zero, then create a new connection
/usr/bin/ssh -p 19922 tunnel@localhost ls
if [[ $? -ne 0 ]]; then
    echo Creating new tunnel connection
    createTunnel
fi

сохранить и закрыть и сделать его исполняемым с помощью

chmod 700 /home/tunnel/check_ssh_tunnel.sh

а затем запустите скрипт, он запустит туннель с удаленным ПК.

Прочтите эту ссылку выше, она обязательно.


2
2018-05-21 11:14



Но это только один порт, нет? - Rémi
вам нужны несколько портов? - rɑːdʒɑ
@ Rémi проверить это unix.stackexchange.com/questions/19242/... - rɑːdʒɑ
Это создаст только туннель с одним портом, он классный и очень элегантный, но не тот, который мне нужен. - Ba7a7chy
@ Ba7a7chy его k, рад, что это вам помогло - rɑːdʒɑ