利用SSH隧道方式連線遠端MySQL伺服器

2021-06-22 02:04:32 字數 2151 閱讀 8645

1、簡介:

大多數人知道ssh是用來替代r命令集,用於加密的遠端登入,檔案傳輸,甚至加密的ftp(ssh2內建),因此ssh成為使用極廣的服務之一,不僅如此,ssh還有另一項非常有用的功能,就是它的埠**隧道功能,利用此功能,讓一些不安全的服務象tcp、pop3、smtp、ftp,ldap等等通過ssh的加密隧道傳輸,然後,既然這些服務本身是不安全的,密碼和內容是明文傳送的,通過使用ssh隧道傳輸的話再想在其中間監聽也是徒勞無功的了。本文主要介紹通過ssh隧道連線遠端mysql伺服器,ssh隧道更詳細的文章參見:官方關於ssh隧道的介紹文章

2、使用windows客戶端連線

下面介紹使用windows系統下比較流行的mysql終端工具sqlyog enterprise,通過ssh隧道連線mysql伺服器。如下圖:

新建連線

mysql標籤頁

ssh標籤頁

3、linux命令列下使用ssh命令建立ssh隧道

mysql伺服器位址為:192.168.99.52 

本機位址為:192.168.99.91

前提 將本機的ssh public key複製到mysql伺服器中,也就是將本機的id_rsa.pub內容新增到mysql伺服器的~/.ssh/authorized_keys檔案中。我這裡用命令實現。

利用 ssh-keygen 命令 生成本機id_rsa.pub檔案 

# ssh-keygen 連續回車生成id_rsa.pub 檔案

將id_rsa.pub檔案複製到mysql伺服器中 

# ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.99.52

開始挖隧道

利用ssh命令在本機開個3388的埠,這個埠為隧道的入口埠,也就是說我一會兒通過在本機連線這個埠來達到連線mysql伺服器3306埠的目的。使用命令如下:

ssh -ncpf [email protected] -l 3388:192.168.99.52:3306

引數解釋

-c    使用壓縮功能,是可選的,加快速度。 

-p    用乙個非特權埠進行出去的連線。 

-f    一旦ssh完成認證並建立port forwarding,則轉入後台執行。 

-n    不執行遠端命令。該引數在只開啟**埠時很有用(v2版本ssh支援)

這裡的[email protected] 是登陸mysql伺服器的ssh使用者名稱和ip位址-l 3388:192.168.99.52:3306 這個引數的意思是說在本機開放3388埠到192.168.99.52:3306埠的對映,也就是說隧道的入口為3388出口為mysql伺服器的3306

執行完後檢視本地連線情況

# netstat -tulnp | grep 3388 

tcp    0    0 127.0.0.1:3388    0.0.0.0:*    listen    14273/ssh 

tcp    0    0 ::1:3388    :::*    listen    14273/ssh

檢視本機與mysql伺服器的ssh連線情況

# netstat -an | grep 192.168.99.52 

tcp    0    0    192.168.99.91:7612    192.168.99.52:9698    established

通過這兩條命令可知,執行完命令之後,本機與mysql伺服器就建立起了ssh連線,且開放了3388埠。

通過隧道連線mysql伺服器

# mysql -u dbname -p 3388 -h 127.0.0.1 -pdbpwd

enter password: 

welcome to the mysql monitor.  commands end with ; or \g. 

your mysql connection id is 52562 

server version: 5.1.31-log source distribution

type 'help;' or '\h' for help. type '\c' to clear the current input statement.

[email protected] [(none)] >show databases; 

4 rows in set (0.00 sec)

連線成功!

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

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

通過SSH隧道遠端辦公

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

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

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