ssh隧道(通過跳板機)連線mysql
阿新 • • 發佈:2018-11-08
案例:
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或域名
看到3307埠說明監聽了;
使用mysql命令開始連線:
mysql -h127.0.0.1 -P3307 -uroot -p (此命令需要注意點-h要填,-P埠是大寫,不然會連線到自己本地的mysql而不是遠端的mysql)
連線成功之後執行命令:
show databases;
看到的是自己遠端mysql伺服器上的資料庫就說明連線成功了;