1. 程式人生 > >利用SSH隧道方式連線遠端MySQL伺服器

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

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伺服器。如下圖:

SQLyog_Enterprise_new_connection.png 
新建連線

SQLyog_Enterprise_Mysql_TAB.png 
MySQL標籤頁

SQLyog_Enterprise_SSH_TAB.png 
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; 
image 
4 rows in set (0.00 sec)

連線成功!

本文來自:http://salogs.com/2009/11/%E5%88%A9%E7%94%A8ssh%E9%9A%A7%E9%81%93%E6%96%B9%E5%BC%8F%E8%BF%9E%E6%8E%A5%E8%BF%9C%E7%A8%8Bmysql%E6%9C%8D%E5%8A%A1%E5%99%A8/

相關推薦

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

1、簡介:      大多數人知道SSH是用來替代R命令集,用於加密的遠端登入,檔案傳輸,甚至加密的FTP(SSH2內建),因此SSH成為使用極廣的服務之一,不僅如此,SSH還有另一項非常有用的功能,就是它的埠轉發隧道功能,利用此功能,讓一些不安全的服務象TCP、POP3

0058-利用ssh客戶端工具遠端連線linux系統

軟體下載SecureCRT 64位 在網盤搜尋 2 檢視檔案 cat /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 HWADDR=00:0c:29:94:d8:45 TYPE=Ether

利用SSH隧道技術實現跳板機SHELL登陸以及SFTP到內網伺服器

出於安全考慮,公司的一組應用伺服器僅允許特定P遠端SSH訪問,帶來安全防護的同時也增加了進行SSH登入和SFTP上傳維護的繁瑣,在授權的IP伺服器上搭建VPN作為跳板是一種解決方案,本文闡述的,是另一種更加簡單的安全訪問方式,主要是基於日常維護所使用的Xshell和Xftp工具來配置(這兩個工具實在是太方

[CentOS Python系列] 四.阿里雲伺服器CentOS連線遠端MySQL資料庫及pymsql

從2014年開始,作者主要寫了三個Python系列文章,分別是基礎知識、網路爬蟲和資料分析。  隨著人工智慧和深度學習的風暴來臨,Python變得越來越火熱,作者也準備從零學習這些知識,寫相關文章。本篇

Mac使用SSH免密碼連線遠端伺服器(DigitalOcean)

起因 作為Github學生包裡面幾個比較實用的東西,DigitalOcean提供給我們一張50美刀的券,不過需要用PayPal充值5美刀才能啟用,大概就三十塊錢吧。 以前有邀請他人送10美金的活動。但現在優惠提升了!!被邀請者六十天內有100美金的額度可以用,就

pgcli通過SSH本地轉發連線遠端伺服器上的PostgreSQL DB

遠端主機(10.64.1.129)需求: 1. 假設遠端主機打開了ssh埠 2. 啟動了PostgreSQL,且監聽埠為預設的5432 3. 遠端主機的postgreSQL DB只允許localhost訪問 本地主機(10.64.71.6)需求:

利用SSH隧道技術穿越內網訪問遠端裝置

本文為作者原創,轉載請註明出處:https://www.cnblogs.com/leisure_chn/p/11899478.html 通常,我們用於除錯的計算機無法遠端訪問位於區域網中的待除錯裝置。通過 ssh 的埠轉發(又稱 ssh 隧道)技術,可以實現這種遠端除錯功能。 下文中,sshc 指 ssh 客

rsync命令詳解、rsync用ssh隧道方式同步

命令 針對 添加 ssh root res 方式 author 設備文件 對待 ● rsync格式安裝命令 yum install -y rsync與scp的區別:scp復制為完全覆蓋,rsync為增量同步,只同步修改過的數據。rsync命令格式如下: rsync 選項

本地cmd連線遠端mysql資料庫

一、登入遠端mysql 輸入mysql -h要遠端的IP地址 -u設定的MySQL使用者名稱 -p登入使用者密碼 例如:mysql -h 192.168.1.139 -u root -p dorlocaldata ( 如果不能實現,把MySQL安裝目錄下的MySQL Server 5

配置phpmyadmin連線遠端 MySQL資料庫

1、phpmyadmin程式所在伺服器:192.168.1.1,訪問地址為:http://192.168.1.1/phpmyadmin 2、MySQL資料庫所在伺服器:192.168.1.2,已經允許資料庫外鏈,MySQL資料庫使用者名稱:admin 密碼:123456 3、現在要通過http://

Jmeter中使用SSH外掛,連線遠端linux機器執行命令

一、Why   在雲主機測試中,需要使用SSH協議連線雲主機進行相關操作 在python中使用paramiko庫很好實現,在如果要使用jmeter做效能測試時,怎麼做? 二、解決 既然原生jmeter沒有相關的ssh sampler,那就先按思路看看網上有沒有現成的,沒有再自己寫,googl

錯誤碼:2003 不能連線MySQL 伺服器在 (10061)

cmd中開啟mysql,出現錯誤: 解決方法: 開啟D:\mysql-8.0.12-winx64中的my.ini 將 也就是說mysql伺服器預設綁定了127.0.0.1埠,這樣其他遠端

Node.js使用ftp連線遠端ftp伺服器列舉和下載檔案示例

示例程式碼: var Ftp = require('ftp'); var fs = require('fs'); var path = require('path'); // 首先判斷引數中是否包含{dateString} var args = process.argv.splice(2); if (ar

Java/Spring使用IPv6地址連線MySQL伺服器

地址格式 IPv6 地址有兩個邏輯部分:64 位網路字首和 64 位主機地址部分。(主機地址通常是從介面 MAC 地址自動生成的。) IPv6 地址由 8 組 16 位十六進位制值表示,以冒號(:)分隔,如下所示: IPv6 地址的典型示例: 2001:0db8:85a3

Oracle:如何使用PL-SQL 11.0連線遠端Oracle12c伺服器

背景:   如何實現遠端連線伺服器上的oracle12c? 1、安裝一個oracle12c空庫,使用oracle12c中整合的oracle pl/sql developer工具實現連線遠端伺服器上的oracle12c資料庫。缺點:太笨重;優點:功能全。 2、安裝一個orac

php連線遠端mysql資料庫例項

下面把localhost改成遠端IP即可了 例項 $conn=mysql_connect('150.125.221.25','root','123'); 配置項:重點: 第一步:進去mysql(mysql/bin mysql -u root -p); 第二步:輸入密碼 第

Navicat for mysql 1130錯誤 用Navicat連線遠端MYSQL:報錯ERROR 1130: Host '192.168.1.3' is not allowed to connec

Navicat for mysql 1130錯誤 用Navicat連線遠端MYSQL,提示如下錯誤,我以為是自己的防火牆問題,但是關了,依然不行。  我認為這段英文,有點誤導,讓人感覺是自己這邊出了問題。  看解決方法吧  ERROR 1130: Host '192.168.1.3' is not allo

利用IDEA進行GIT連線遠端倉庫

GitGit是一個免費的開源分散式版本控制系統,旨在處理速度和效率從小到大的專案。我們利用Git可以進行專案版本的控制。不多BB,下來我們開始進行操作。1. 首先,我們在本地建立倉庫,並將專案提交到本地1.1 我們利用idea新建一個Maven專案(其實隨便什麼專案都可以).

phpMyAdmin 嘗試連線MySQL 伺服器伺服器拒絕連線問題解決方法

問題如下: 我是warmserver中在用phpadmin遇到如圖所示問題: 解決方法 1 在wamp/apps/phpMyadmin搜尋到 檔案config.inc.php 如圖所示 2用記事本開啟  程式碼如下: <?php

Django連線遠端mysql資料庫

最近在做一款軟體,用django搭建的後臺管理系統,Android端需要的資料在一臺獨立的資料庫伺服器上存放著,需要做的工作是: (1)連線遠端mysql資料庫 (2)為遠端資料庫中的表建立model (1)django連線遠端資料庫, 第一步配置setting.py中的