請問有人會寫 SFTP (SSH) Client 程式嗎? 可否幫忙檢查錯誤 |
缺席
|
pcboy
版主 發表:177 回覆:1838 積分:1463 註冊:2004-01-13 發送簡訊給我 |
請問有人會寫 SFTP (SSH) 程式嗎? 可否幫忙檢查錯誤
程式執行到 FTP.Client 就不會往下執行, 也沒有跳出錯誤訊息 <textarea class="delphi" rows="10" cols="60" name="code">procedure TForm1.Button1Click(Sender: TObject); var User, Passwd, Host, Port: String; Result : Boolean; SSL : TIdSSLIOHandlerSocketOpenSSL; E:Exception; i: integer; //function FtpAccess.ConnectToSFTPServer(User, Passwd, Host, Port: String): boolean; begin // 帳號密碼沒錯, 用 putty.exe 可以連上 User:='root'; Passwd:='password'; Host:='192.168.128.128'; Port:='22'; Result:= False ; SSL:= TIdSSLIOHandlerSocketOpenSSL.Create(FTP); SSL.ReadTimeout := 60000; SSL.SSLOptions.Method := sslvSSLv23; SSL.SSLOptions.Mode := sslmClient; FTP:= TIdFTP.Create(nil); FTP.AutoLogin:= True; FTP.IOHandler := SSL ; FTP.AutoLogin := True; FTP.Passive := True; FTP.UseTLS := utUseExplicitTLS; FTP.AUTHCmd := tAuthSSL; // FTP.DataPortProtection:= ftpdpsPrivate ; // Undeclared identifier: 'ftpdpsPrivate' FTP.Username:= USER; FTP.Password:= Passwd; FTP.Host:= HOST; FTP.Port:= StrToInt(Port) ; FTP.Disconnect ; Try FTP.Connect ; // 錯誤, 此步執行不完 for i:=0 to FTP.ListResult.Count-1 do Memo1.Lines.Add(FTP.ListResult[i]); Result:= True ; Except on E:Exception do Begin // MyDataModule.AddToFtpLog('ERROR Func ConnectToSFTPServer', E.Message); // MyDataModule.Log('ERROR Func ConnectToSFTPServer',E.className ' ' E.Message); end ; End ; end; </textarea>
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案! 子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問! 編輯記錄
pcboy 重新編輯於 2007-07-27 17:56:51, 註解 無‧
|
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
報告pcboy大,Client與Server連線要花點時間,你可能要把Connet「連線」的方法先建立起來再去取得資訊。看看暗黑大之前的討論內容。
http://delphi.ktop.com.tw/board.php?cid=168&fid=920&tid=89524 |
pcboy
版主 發表:177 回覆:1838 積分:1463 註冊:2004-01-13 發送簡訊給我 |
|
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
其實我除了看了暗黑大之前的說明外,我自己也實作過類似多人聊天室的程式,我的經驗是:如果Client socket在Open後立即執行Socket通信是不行的!必須延遲一段時間(我的經驗是100ms-500ms)等待tree way hand shake完成後再進行是比較妥善的作法。
===================引 用 pcboy 文 章=================== > 把Connet「連線」的方法先建立起來 ?
還需要其他程式碼 ? (這是網路的程式拿來改的) Server 是這台電腦 VMware 上的 Linux, 不是LAN或Internet的別台電腦
用 putty.exe 是馬上就連上了, 這個程式也應該慢不了多少吧 |
暗黑破壞神
版主 發表:9 回覆:2301 積分:1627 註冊:2004-10-04 發送簡訊給我 |
|
pcboy
版主 發表:177 回覆:1838 積分:1463 註冊:2004-01-13 發送簡訊給我 |
To : Stallion 兄
我是參考這兩篇的程式做的, 似乎原來寫的人也是因為無法執行而提出問題 http://www.delphifr.com/infomsg_ERREUR-VERIFICATION-ETENDUE_829137.aspx http://www.developpez.net/forums/archive/index.php/t-224192.html 我剛剛又測試一次, 等了 5 分鐘, 仍是沒有連上
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案! 子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問! |
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
|
pcboy
版主 發表:177 回覆:1838 積分:1463 註冊:2004-01-13 發送簡訊給我 |
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案! 子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問! |
暗黑破壞神
版主 發表:9 回覆:2301 積分:1627 註冊:2004-10-04 發送簡訊給我 |
|
orson
中階會員 發表:5 回覆:135 積分:58 註冊:2002-07-11 發送簡訊給我 |
SFTP 並不等同於 FTP over SSH
他是一個完全不同的規格 Indy的FTP 並不支援它 SFTP的協定定義是 IETF draft-ietf-secsh-filexfer IdFTP 支援的協定是 RFC 959 - File Transfer Protocol [FTP] RFC 2228 - FTP Security Extensions RFC 2389 - Feature negotiation mechanism for the File Transfer Protocol RFC 2428 - FTP Extensions for IPv6 and NATs RFC 2640 - FTP Internalization IETF Draft Extensions to FTP Deflate transmission mode for FTP Securing FTP with TLS --- 順帶一提 您所寫的code 應該可以連上FTP over SSL/TLS |
pcboy
版主 發表:177 回覆:1838 積分:1463 註冊:2004-01-13 發送簡訊給我 |
傷腦筋, 再執行 WinSCP 看了一下, 它支援 3 種協定
SFTP SFTP (allow SCP fallback) (預設這種) SCP 如果 IdFTP 不支援, 那就要用 WinSock 來寫了嗎 ? (或還有什麼辦法?) 可以提供範例 or 幾個一定會用到的 API 當 Google 搜尋關鍵字嗎 ? (小弟應該會先用 delphi SFTP winsock 或 wininet 去搜尋吧)
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案! 子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問! |
orson
中階會員 發表:5 回覆:135 積分:58 註冊:2002-07-11 發送簡訊給我 |
|
暗黑破壞神
版主 發表:9 回覆:2301 積分:1627 註冊:2004-10-04 發送簡訊給我 |
|
Coffee
版主 發表:31 回覆:878 積分:561 註冊:2006-11-15 發送簡訊給我 |
這是所謂的ssh tunnel吧?
在putty上也有,我拿來連過vnc ===================引 用 暗黑破壞神 文 章=================== 咦。對了。我記得還有一種方式。 它是利用 PC 這邊的一個 ssh 建立連線到 server 端。 而你的應用程式跟你 local ssh 做連線。 也就是說由那個 ssh client 幫你做成一個通道。 而你的程式不必自己去實現 ssh 的加解密。 也許這樣你會比較簡單。 只是給客戶時,必須要有那個 ssh client 的版權。。。。。etc
------
不論是否我發的文,在能力範圍皆很樂意為大家回答問題。 為了補我的能力不足之處,以及讓答案可以被重複的使用,希望大家能儘量以公開的方式問問題。 在引述到我的文時自然會儘量替各位想辦法,謝謝大家! |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |