Как переадресовать порты через SSH-туннель, используя Granados с C # - PullRequest
2 голосов
/ 18 июня 2011

Я использую библиотеку Granados SSH и пытаюсь перенаправить порт 3306 на моем локальном хосте на порт 3306 на удаленном хосте (т. Е. Порт сервера MySQL).То есть я хочу иметь возможность подключаться к серверу MySQL удаленного хоста через туннель SSH.

Вот пример того, что я в настоящее время пробовал использовать библиотеку Granada .NET SSH, но которая неКажется, что это работает:

public SSHConnection _conn;
_conn.ListenForwardedPort("localhost", 3306); //doesn't work

Может кто-нибудь сказать мне, как я могу достичь того, чего я хочу?

1 Ответ

2 голосов
/ 18 июня 2011

Ваша терминология задом наперед!То, что вы пытаетесь сделать, - это туннель от локальной машины до удаленной системы.Это связано с тем, что удаленной системой является сервер TCP , поэтому соединение инициируется в локальной системе и принимается в удаленной системе.Метод ListenForwardedPort предназначен для другого направления.

Я не проверял это, но, прочитав исходный код Гранадоса, я думаю, что вам нужен метод ForwardPort.Он принимает четыре связанных с хостом аргумента, например:

  • remote_host: хост с сервером на нем, т.е. ваш сервер MySQL
  • remote_port: порт, которым является серверпрослушивание, т. е. 3306
  • originator_host: хост, который вы хотите прослушивать на локальной стороне, вероятно, "localhost"
  • originator_port: порт хоста, к которому вы хотите подключитьсяна локальной стороне вы можете повторно использовать 3306 или выбрать любой другой доступный номер

Ваш сервер MySQL, remote_host, может быть «localhost» (как видно на другой конечной точке SSHсоединение), но это также может быть любая машина, доступная удаленной системе.Вы также можете использовать IP-адрес удаленной системы, то есть что-то отличное от localhost или 127.0.0.1.

...