Как сделать эшафот как sh туннель - PullRequest
0 голосов
/ 27 марта 2020

У меня есть база данных postgres на удаленном компьютере, которую мне нужно использовать

Чтобы войти на этот компьютер, я делаю это как обычно,

ssh <myuser>@<subdomain.domain.com> -p <custom port>

После входа в систему я должен снова

ssh <someServerName>

Тогда я могу сделать

psql -U postgres -W

и попасть в базу данных

Короче говоря, мне нужно сделать ssh something дважды

Можно ли подключиться к этой базе данных , используя ядро ​​платформы сущностей ?

Дополнительный вопрос: будет ли это называться sh tunnel?

Решение

Это называется Port Fowarding

using (var client = new SshClient("<public ip>", <port>, "<myuser>", "<mypassword>"))
{
    client.Connect();

    var port = new ForwardedPortLocal("localhost", 5432, "10.0.0.5", 5432);
    client.AddForwardedPort(port);

    port.Start();

    using (var conn = new NpgsqlConnection("Server=localhost;Database=<secret>;Port=5432;User Id=postgres;Password=<secret>;"))
    {
        conn.Open();
    }

    port.Stop();
    client.Disconnect();
}

1 Ответ

0 голосов
/ 27 марта 2020

Предполагая, что вы хотите запустить команду psql с локального хоста, вы можете сделать:

ssh -t <myuser>@<subdomain.domain.com> -p <custom port> ssh -t <someServerName> psql -U postgres -W

Чтобы выполнить переадресацию портов (туннелирование S SH), вы можете выполнить в одном терминале:

ssh -L 5432:someServerName:5432 <myuser>@<subdomain.domain.com> -p <custom port>

-L 5432:someServerName:5432 означает, что теперь порт 5432 на локальном хосте перенаправляется на someServerName: 5432 (порт используется postgres)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...