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 不執行遠端命令。該引數在只開啟 ...