標籤:
百度隨時就能搜,你就懶得搜下。
http://tieba.baidu.com/p/671327617
Ssh tunnel通常能實現3種功能
1) 加密網路傳輸
2) 繞過防火牆
3) 讓位於廣域網路的機器串連到區域網路內的機器
---------------------------------------------------------------------------------
Delphi能通過SSH登入Linux,串連MYSQL取數嗎?
SSH是遠端連線Linux的其中一種通道方式。
目前Linux的MYSQL不允許開放遠端存取,因此只能SSH登入Linux後訪問MYSQL。
像Navicat 有參數是SSH通道,填Linux伺服器的IP、使用者、密碼,
還有參數填安裝在Linux下的MYSQL IP、使用者、密碼,Navicat能串連上MYSQL取數了
Delphi的組件基本只能直連填MYSQL IP、使用者、密碼,目前找不到相關先通過SSH,再MYSQL串連的資料啊。
不知道用什麼方法能在本地通過SSH串連上遠程Linux伺服器上的MySQL
求大俠們指點指點
---------------------------------------------------------------------------------
謝謝各位大俠,經過2天的摸索,基本把功能實現了。
大部分SSH串連軟體都有SSH通道轉寄功能,就是用這個實現的。
如果Delphi在代碼上實現的話,用libSSH 或者 SecureBridge都可以。
代碼基本不用帖,思路給大家講一下吧。
SSH有連接埠轉寄(映射)功能,把Linux的MYSQL連接埠,映射到本機對應的連接埠後,
然後訪問就等於本機安裝了MYSQL直接存取了。
---------------------------------------------------------------------------------
到UniDAC的Demos\TechnologySpecific\SecureBridge 目錄裡安裝好控制項.然後添加CRSSHIOHandler控制項,再在設定一下unidac的IOHandler就可以使用SecureBridge了
再通過 xuchuantao (暗黑天使) 大俠的指點:
目前可以通過SSH通道連接埠映射或者
用 UniDac + SecureBridge 實現。
UniDAC的Demos\TechnologySpecific\SecureBridge 還有個CRSSLIOHandler組件要安裝
拖出 SSHClient、SSHChannel、 CRSSLIOHandler、FileStorage 組件
UniConnection IOHandler屬性關聯一下組件 CRSSLIOHandler
再按一般直連方式填入 MySQL串連資訊即可
SSHClient組件 HostName(Linux伺服器IP)、PassWord(密碼)、Port(連接埠)、User(Linux 登入使用者如:ROOT)
然後就全部OK了
當然SSH要KEY才可以的 在SSHClient 的 OnServerKeyValidate 事件加入
var
Key: TScKey;
fp, msg: string;
begin
Key := ScFileStorage.Keys.FindKey(ScSSHClient.HostName);
if (Key = nil) or not Key.Ready then
begin
NewServerKey.GetFingerPrint(haMD5, fp);
NewServerKey.KeyName := ScSSHClient.HostName;
ScFileStorage.Keys.Add(NewServerKey);
Accept := True;
end;
end;
才行,否則啟動並執行時候串連會提示 Host key not verified
然後就可以愉快的串連了,當然MySQL亂碼問題還是要設定一下utf8 和 useunicode
http://bbs.2ccc.com/topic.asp?topicid=504027
http://bbs.2ccc.com/topic.asp?topicid=516086
Delphi能通過SSH登入Linux,串連MYSQL取數嗎?像Navicat一樣