Назад | Перейти на главную страницу

Могу ли я использовать ssh-туннель и обратный ssh-туннель в одном соединении?

Я сейчас использую .ssh/config для хранения сети моего офиса:

Host office
    Hostname office.company.com
    Port 22222
    User hobbes3

Чтобы подключиться к базе данных Postgres удаленного офиса, мне нужно подключиться к серверу офиса по SSH, а затем перейти к базе данных офиса, поэтому я использую туннелирование ssh, как это

ssh -L 5433:db:5432 office

(Я использую порт 5433, поскольку на моем компьютере уже установлена ​​локальная база данных Postgres)

(А db - это разрешенное имя хоста сервера базы данных в офисной сети)

Я также использую Xdebug для отладки PHP, поэтому моя локальная машина прослушивает порт 9000. Поэтому я использую обратное туннелирование ssh, подобное этому

ssh -R 9000:localhost:9000 office

Но это означает, что мне нужно открыть 2 терминала, и я попытался объединить две команды в одну, как это

ssh -L 5433:db:5432 -R 9000:localhost:9000 office

(Я знаю, что могу использовать xdebug.remote_host для прямого подключения к общедоступному IP-адресу моего локального компьютера, но я хотел использовать туннелирование, чтобы я мог работать в офисе или дома под двумя разными IP-адресами)

но это сработало только наполовину ( -L туннель работал, но -R не сделал).

Могу ли я использовать в одной команде как обычное, так и обратное SSH-туннелирование? И если да, то что я сделал не так? Заранее спасибо!

Совершенно законно использовать как прямую, так и обратную переадресацию портов в одном туннеле. Вы даже можете умножить каждый параметр, чтобы настроить переадресацию нескольких портов.

Я уверен, что ваша проблема немного другая: вы хотите перенаправить порт 9000, который предназначен для X-соединений, и ваш подход, скорее всего, конфликтует с еще двумя связанными механизмами безопасности: собственной авторизацией X-сервера и собственным контролем X-пересылки SSH. Если вы стремитесь запускать X-приложения только через SSH-клиент, вам не нужно туннелировать X-порты вручную. Вместо этого настройте и ваш SSH-сервер, и клиент, чтобы установить X-forwarding с помощью этой конфигурации:

1) На SSH сервере установите строку «X11Forwarding yes» в / etc / ssh / sshd_config (не забудьте перезапустить sshd)

2) На стороне клиента либо используйте явную опцию -X для ssh, либо, альтернативно, добавьте строку «ForwardX11» в ваш .ssh / config для подключенного хоста. Команда была бы такой:

ssh -X -L 5433: db: 5432 офис

который должен настроить пересылку X по соглашению между всеми механизмами управления X.