通過ssh隧道訪問mysql

2021-06-28 16:37:54 字數 1743 閱讀 9884

我的機器可以連線伺服器a,a可以訪問伺服器b上的mysql,但是我的機器不能訪問b,所以我需要建立乙個我本地機器到伺服器a的ssh隧道來訪問伺服器b上的mysql。

理一下思路:

1.我要ssh的伺服器是111.112.113.114,埠是5122,賬戶名是wz。

3.我打算把這個ssh隧道繫結到我本地的3307埠。

好了,搞明白之後我們開始寫命令:

andy@andymacbookpro

:/usr/local/webdata/andy/shop/jd/job

$ ssh -fn -l3307

:192.168.3.51

:3306 -p5122 [email protected]

[email protected]

's password:

andy@andymacbookpro:/usr/local/webdata/andy/shop/jd/job$ lsof -i:3307

command pid user fd type device size/off node name

ssh 1114 andy 5u ipv6 0xaed4b8ceeaf7e51 0t0 tcp localhost:opsession-prxy (listen)

ssh 1114 andy 6u ipv4 0xaed4b8cfd6dcef1 0t0 tcp localhost:opsession-prxy (listen)

andy@andymacbookpro:/usr/local/webdata/andy/shop/jd/job$

可以看到最後已經建立了兩個隧道,命令成功!

其中ssh的語法是這樣的:

ssh -fn -l(要繫結到的本地埠):(伺服器b的host):(伺服器b上要訪問的埠號) -p(伺服器a的埠,預設為22) (伺服器a的賬戶):(伺服器a的host)

感謝以下資料:

之後我們就可以寫php**來通過ssh隧道來訪問那台無法直接連線的mysql伺服器了,我這裡使用的是medoo這個好東西:

ini_set('memory_limit','256m');

error_reporting(1);

set_time_limit(0);

$medoo = '/usr/local/webdata/github/medoo/medoo.php';

require

$medoo;

$database = new medoo([

'database_type' => 'mysql',

'database_name' => 'monitor',

'server' => '127.0.0.1',

'username' => 'myname',

'password' => 'mypassword',

'port' => '3307',

]);$database->query("set names utf8;");

$sql = 'show tables';

$data = $database->query($sql)->fetchall();

echo

'';var_dump($data);exit;

經驗證可以訪問成功。另,以上的server如果寫成localhost是會報錯的,要設定為127.0.0.1才可以。

通過SSH隧道遠端辦公

ssh不僅可以用於遠端主機登入,還可以作為 也就是ssh隧道。具體場景如下圖,客戶端可以ssh登入到外網伺服器,外網伺服器與內網伺服器可以網路連線,但客戶端與內網伺服器無法網路連線。此時就可以通過ssh隧道,將客戶端的請求通過外網伺服器 到內網伺服器,再將請求返回給客戶端,實現客戶端與內網伺服器的網...

C 通過SSH隧道的方式連線遠端MySql 資料庫

出於安全考慮,我們的伺服器不會對外開放3306埠,這時候就需要用到ssh隧道的方式連線,需要ssh.net類庫 如下 using mysql.data.mysqlclient using renci.sshnet using system using system.collections.gener...

通過SSH隧道連線遠端MySQL資料庫

命令 ssh ncpf root 111.111.111.111 l 3316 127.0.0.1 3306 引數 c 使用壓縮功能,是可選的,加快速度。p 用乙個非特權埠進行出去的連線。f 一旦ssh完成認證並建立port forwarding,則轉入後台執行。n 不執行遠端命令。該引數在只開啟 ...