? ? ? ?在項目開發中遇到這樣一個問題,客戶服務器有一臺操作系統的CentOS JAVA服務器和MySQL服務器,本地電腦通過VPN SSH到這2臺服務器進行日常維護。最近因為修改了遠程Mysql服務器導致重啟時連不上Mysql服務器了。但是JAVA服務器可以SSH到Mysql服務器。通過各種方法排查沒有查到具體原因,最后考慮一個解決方案是用SecureCRT 登錄JAVA服務器,然后由JAVA服務器將SSH請求轉發到MySQL服務器,從而間接實現SecureCRT SSH 到Mysql服務器。
? ? ? ?那么SecureCRT如何配置端口轉發呢?
? ? ? 首先需要建立一個SecureCRT到JAVA服務器的會話,這個會話作為一個跳板機會話,遠程主機填寫JAVA服務器的IP和22端口(SSH默認端口),會話的登錄賬號和密碼為JAVA服務器的登錄賬號和密碼。然后會話選項中添加一個端口轉發,見下圖:
? ? ? ?假定192.168.76.30是Mysql服務器的IP。這樣建立一個本機127.0.0.1,端口是30022到192.168.76.30,端口22的轉發規則。建立后,這個會話需要一直保持鏈接,所以要配置下反空閑,防止一會連接就自動關閉了:
? ? ? 然后JAVA服務器上要配置允許端口轉發,需要在/etc/ssh/sshd_config中增加下面的配置:AllowTcpForwarding yes ,這樣默認是用#注釋掉的,把#號去掉 然后運行systemctl? restart sshd
? ? ? ?接下來還要再建立一個會話,這個會話設置ip為本機的IP 127.0.0.1,端口為前面配置的轉發端口30022(只要不被占用即可),會話鏈接后會提示輸入登錄賬號和密碼,這個登錄賬號和密碼輸入Mysql服務器的登錄賬號和密碼即可。
? ? ? ?綜上所述,配置端口轉發需要建立兩個會話,其中一個是建立一個轉發通道,要保持一直運行,然后再建立一個新的會話,新的會話是本機127.0.0.1通過本機某個端口(30022),通過跳板機(JAVA 服務器)將SSH請求轉發給目標服務器(MySQL服務器)。注意這個轉發端口(30022)是本機的,不是跳板機的。