ssh隧道(通過跳板機)連接mysql


案例:

A服務器   B服務器   C服務器mysql

現在mysql服務器C只能通過內網訪問,B服務器就能通過內網連接訪問到mysql

A服務器無法直接連接C服務器mysql,所以要通過跳板機(跳板機指的是B服務器)連接mysql

實現:

在A服務器下面執行命令

ssh -p {ssh_port} -i {rsa_file} -fNL {local_port}:{mysql_ip}:{mysql_port} {ssh_user}@{ssh_ip}
 
命令詳解:
  • -p {ssh_port}: 指定跳板機器的ssh服務的端口(也就是B服務器)
  • -i {rsa_file}:指定連接跳板機的ssh公鑰,由跳板機的ssh服務端生成,如果不指定公鑰或者公鑰驗證失敗則會彈出密碼進行登錄。(如果需要密碼登錄可以不填-i)
  • -f:告訴SSH客戶端在后台運行(也就是執行命令之后在進程監聽,需要關閉直接kill)
  • -N:只進行端口轉發,不執行命令
  • -L:指定連接服務的格式 [bind_address:]port:host:hostport
  • {local_port}:本地監聽的端口
  • {mysql_ip}:轉發到的mysql的ip或域名(遠程mysql主機地址)
  • {mysql_port}:轉發到的mysql的端口
  • {ssh_port}:跳板機的
  • {ssh_user}:跳板機的ssh用戶名(如果為rsa登錄,則ras對應的用戶名和ssh_user一致)
  • {ssh_ip}:跳板機的ip或域名
參考實例:
ssh -p 22 -i ./id_rsa.pub -fNL 3307:mysql_ip:3306 root@root_ip
 
A服務器執行以上命令就可以連接遠程MySQL了
 
測試連接:
首先查看端口有沒有監聽執行: ss -ntl

看到3307端口說明監聽了;

使用mysql命令開始連接:

mysql -h127.0.0.1 -P3307 -uroot -p    (此命令需要注意點-h要填,-P端口是大寫,不然會連接到自己本地的mysql而不是遠程的mysql)

連接成功之后執行命令:

show databases;

看到的是自己遠程mysql服務器上的數據庫就說明連接成功了;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM