百度隨時就能搜,你就懶得搜下。
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