我的機器可以連線伺服器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 wz@111.112.113.114
wz@111.112.113.114
'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這個好東西:
經驗證可以訪問成功。另,以上的server如果寫成localhost是會報錯的,要設定為127.0.0.1才可以。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;
通過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 不執行遠端命令。該引數在只開啟 ...