Хотя это не точное совпадение, вот пара других тесно связанных вопросов:
- Как получить доступ к серверу SSH, который не может принимать входящие соединения
- установление ssh-соединения между машинами за брандмауэрами
Чтобы решить вашу конкретную проблему, я бы добавил следующее в ваш файл .ssh/config
на "A":
Host B
User abc
ForwardAgent yes
Host C
User root
LocalForward 3306:localhost:3306
ProxyCommand ssh -A B -p 22 -W %h:%p
#ProxyCommand ssh -A B -p 22 nc %h %p
Имея это в виду, вы сможете использовать ssh C
для:
- получить оболочку на C, прыгая через B, и
- установите локальный (для хоста A) порт вперед для вашего рабочего места mysql.
Как только соединение установлено, вы можете указать свой локальный (на A) рабочий стол mysql на localhost:3306. Если у вас есть другой экземпляр mysql, работающий локально на A, выберите другой порт в опции конфигурации LocalForward
и подключитесь к нему.
Обратите внимание, что есть две опции для ProxyCommand, чтобы перепрыгнуть через B, чтобы добраться до C. Альтернатива использует nc
вместо опции -W
для ssh
, так как опция -W
не была добавлена unitl ssh версии 5.3 (IIRC).
Вам не нужно использовать SOCKS прокси.