Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

Подскажите компонент для delphi для работы с SSH   Найти похожие ветки 

 
Wadimka   (2012-08-26 01:20) [0]

Подскажите компонент для delphi для работы с SSH, ессно халявный


 
Сергей М. ©   (2012-08-27 09:29) [1]

Обязательно компонент ?
А просто библиотека классов и функций Synapse не спасет ОРД ?


 
Rouse_ ©   (2012-08-27 10:24) [2]

WinInet
http://msdn.microsoft.com/en-us/library/windows/desktop/aa385331%28v=vs.85%29.aspx


 
DVM ©   (2012-08-27 10:39) [3]


> Сергей М. ©   (27.08.12 09:29) [1]


>  Synapse

Там кажется не было SSH.


> Rouse_ ©   (27.08.12 10:24) [2]

WinInet это же только HTTP и FTP


 
Сергей М. ©   (2012-08-27 10:51) [4]


> DVM ©   (27.08.12 10:39) [3]


Клиент там есть точно.


 
Rouse_ ©   (2012-08-27 10:57) [5]


> WinInet это же только HTTP и FTP

http://support.microsoft.com/kb/168151


 
DVM ©   (2012-08-27 11:10) [6]


> Rouse_ ©   (27.08.12 10:57) [5]

Ты SSL и SSH не путаешь часом?


 
DVM ©   (2012-08-27 11:20) [7]


> Сергей М. ©   (27.08.12 10:51) [4]
>
> > DVM ©   (27.08.12 10:39) [3]
>
>
> Клиент там есть точно.

Че то я не нахожу ни в исходниках ни в списке возможностей:

http://www.ararat.cz/synapse/doku.php/features

Поддержка SSL есть и модули есть, но это же не SSH клиент.


 
Сергей М. ©   (2012-08-27 11:37) [8]

Юнит прямо так и называется - sshclient.pas.
И в нем объявлен и реализован класс TSSHClient.


 
Rouse_ ©   (2012-08-27 11:40) [9]


> Ты SSL и SSH не путаешь часом?

Да, нюанс, поддерживается FTP over SSL, FTP over SSH не робит


 
DVM ©   (2012-08-27 12:18) [10]


> Сергей М. ©   (27.08.12 11:37) [8]
> Юнит прямо так и называется - sshclient.pas.

Может это твой юнит или чей что еще или он раньше был, сейчас его нет:

http://synalist.svn.sourceforge.net/viewvc/synalist/trunk/


 
Сергей М. ©   (2012-08-27 12:36) [11]


> DVM ©   (27.08.12 12:18) [10]


Точно, ты прав - не ихний ..

Я уж и забыл откуда он у меня взялся ..

Ноги растут отсюда:
http://leonardorame.blogspot.com/2010/01/synapse-based-ssh-client.html


 
AV ©   (2012-08-27 15:47) [12]

мне так хватило
http://delphimaster.net/view/15-1341989915/


 
avil   (2012-08-28 19:31) [13]

Бесплатные в неком. целях cryptlib компоненты. В примере с synaps"сом, судя по всему, используются именно они. Путь не пугают названия юнитов, у них действительно SSH описаны в юнитах с SSL.

Из популярных платных есть еще chilkat (для дельфей ActiveX) и blackbox.


 
Wadimka   (2012-08-29 16:06) [14]

to AV
Все работает отлично, если код написан в основной форме, то есть в unit1

от на отрез отказывается работать в потоке!
Вылетает ошибка сразу при запуске, что Networking subsystem not available


 
AV ©   (2012-08-29 18:43) [15]


> Wadimka   (29.08.12 16:06) [14]

А так это ошибка скорее всего :)

зы
Код показывайте


 
Wadimka   (2012-08-29 19:50) [16]

вот код, делал по этому
http://delphimaster.net/view/15-1341989915/

в одном проекте, на форме в основном работает, а в потоке нет, DLL возвращает эту ошибку.

Я для пробы сделал 2 отдельных проекта, в одном только через форму, во втором через поток, при вызове, где в функции SSH_Client
метод result.Activate;
в файле DelphiCrypt для cryptlib этот метод вызывает:

procedure TCryptSession.Activate;
begin
 SetAttribute(CRYPT_SESSINFO_ACTIVE, 1);
end;

и все, вот тут из потока вылетает, в основной программе работает.

Может что-то нужно в потоке прописать в процедуре запуска?


 
Wadimka   (2012-08-29 20:03) [17]

а ну это твой, я понял, щя выложу код потока


 
Wadimka   (2012-08-29 20:17) [18]



unit th_SSH_unit;

interface
uses Classes, sysutils, rxStrUtils, windows, func, variable, cryptlib, DelphiCryptlib;

CONST
LEN_BUFFER=8191;

type

TTH_SSHClass = class(TThread)
     //Thread: array of TThread;
  private

  pStoped:boolean;
  pIPToConnect:String;
  pLogin:String;
  pPass:String;
  pTimeOut:integer;
  pResultStatus:boolean;
  pTH_IDinDim:integer;
  pErrorNum:integer;
  pSendFirstCommandIslogin:AnsiString;
  pCreateNotRun:boolean;
  pRetOtvetFirstCommandIslogin:String;

  pErrorText:String;
  pSSH: TCryptSession;
  pData: array[0..LEN_BUFFER] of AnsiChar;
  pLenData: Integer;
  pBytePushed: Integer;
  pBytePoped: Integer;

    { Private declarations }
  protected
  procedure Execute; override;
  function AddToBuffer(AddStr:String):integer;
  procedure ClearBuffer;
  function SSH_Client(Server, Userid, Pass: string): TCryptSession;
  public
  property Stoped:boolean read pStoped write pStoped;
  property IPToConnect:String read pIPToConnect write pIPToConnect;
  property TimeOut:integer read pTimeOut write pTimeOut;
  property ResultStatus:boolean read pResultStatus write pResultStatus;
  property TH_IDinDim:integer read pTH_IDinDim write pTH_IDinDim;
  property ErrorNum:integer read pErrorNum write pErrorNum;
  property ErrorText:String read pErrorText write pErrorText;
  property SendFirstCommandIslogin:AnsiString read pSendFirstCommandIslogin write pSendFirstCommandIslogin;
  property RetOtvetFirstCommandIslogin:AnsiString read pRetOtvetFirstCommandIslogin write pRetOtvetFirstCommandIslogin;  
  property pLogin:String read pLogin write pLogin;
  property pPass:String read pPass write pPass;
  property CreateNotRun:boolean read pCreateNotRun write pCreateNotRun;  
  end;

implementation
uses main;

//=============
function TTH_SSHClass.SSH_Client(Server, Userid, Pass: string): TCryptSession;
begin
result := TCryptSession.Create(CRYPT_SESSION_SSH);

with result do begin
  ServerName := Server;  { set hostname or IP address }
  UserName := Userid;    { set user identification }
  Password := Pass;      { set password }
end;
try

  result.Activate;       { establish SSH connection to server }

except
{   on E: ECryptError do
  begin
    pErrorText:=E.Message;
    //mmo1.Lines.Add(E.Message);
    FreeAndNil(result);
  end;
  }
end;
end;

procedure TTH_SSHClass.Execute;
begin
pStoped:=false;
ResultStatus:=false;
     
cryptInit;
try
 pSSH := SSH_Client(pIPToConnect, pLogin, pPass); // eia auoa
 //ViewMessage("MY="+pSSH.ErrorText);

if pSSH.ErrorText="WSAETIMEDOUT: Function timed out before completion" then begin
pErrorNum:=3; //=====
pErrorText:=pSSH.ErrorText;
end else begin
//======
pSSH.FlushData;
Sleep(50);
PLenData := 255;
ClearBuffer;
pBytePoped := pSSH.PopData(addr(pData), pLenData);
pRetOtvetFirstCommandIslogin:=pData+"~~~~";

ClearBuffer;
if pSendFirstCommandIslogin<>"" then begin
pLenData := AddToBuffer(pSendFirstCommandIsBrutted+#13);
pSSH.PushData(Addr(pData), pLenData, pBytePushed);
pSSH.FlushData;
Sleep(50);
pLenData := LEN_BUFFER;
ClearBuffer;
pBytePoped := pSSH.PopData(addr(pData), pLenData);
pRetOtvetFirstCommandIslogin:=pRetOtvetFirstCommandIslogin+pData+"~~~~";
end;

FreeAndNil(pSSH);
end;
finnaly
CryptEnd;
end;
pStoped:=true;
end;

   
function TTH_SSHClass.AddToBuffer(AddStr:String):integer;
var
i:integer;
begin
for i:=1 to Length(AddStr) do begin
pData[i-1]:=AddStr[i];
end;
result:=Length(AddStr);
end;

procedure TTH_SSHClass.ClearBuffer;
var
i:integer;
begin
for i:=0 to LEN_BUFFER do pData[i]:=#0;
end;

end.


Запуск:
TH_SSHClass:=TTH_SSHClass.create(true);
TH_SSHClass.IPToConnect:="127.0.0.1";
TH_SSHClass.Login="ssh";
TH_SSHClass.passw="123";
TH_SSHClass.freeonterminate:=false;

поток работает не в цикле, просто запустил отработал выход


 
AV ©   (2012-08-30 09:10) [19]


> в файле DelphiCrypt для cryptlib этот метод вызывает:
>
> procedure TCryptSession.Activate;
> begin
>  SetAttribute(CRYPT_SESSINFO_ACTIVE, 1);
> end;
>

посмотри какую API дергает, почитай, что там на msdn про нее пишут.
Честно сказать, сегодня не охота уже разбираться :)


 
Wadimka   (2012-08-30 19:31) [20]

она сразу в DLL обращается


 
Wadimka   (2012-08-31 05:45) [21]

AV ну что не смотрел там че да как?


 
Wadimka   (2012-09-01 04:36) [22]

ребят помажите плиз!


 
AV ©   (2012-09-03 17:11) [23]


> AV ну что не смотрел там че да как?

Смотрел..
Не пойму. То работает, то нет.
Дальше не стал копать. Не охота, да и не пойму зачем это нужно?


 
DVM ©   (2012-09-05 14:07) [24]

вот, кстати, недавно наткнулся:

https://bitbucket.org/ZeljkoMarjanovic/libssh2-delphi


 
Wadimka   (2012-09-07 21:40) [25]

>>Не пойму. То работает, то нет.

Так бывало, что и работает?
какие условия, менял что-нить для работы?


 
Wadimka   (2012-09-07 21:53) [26]

>>DVM

СПС сейчас попробую


 
Wadimka   (2012-09-07 23:27) [27]

>>DVM

Что-то я вообще не догоню, как с ней (libssh2) работать, или я *нутый или водки сеня перепил


 
DVM ©   (2012-09-07 23:48) [28]

А что тебе от ssh надо то? Telnet через защищенное соединение?


 
kilkennycat ©   (2012-09-08 01:15) [29]


> или я *нутый или водки сеня перепил

не парься. и то и другое.


 
AV ©   (2012-09-08 01:54) [30]


> Так бывало, что и работает?
> какие условия, менял что-нить для работы?

нет
практически 1:1 как ты привел, иногда инициируется и работает правильно


 
Wadimka   (2012-09-09 06:15) [31]

>>DVM

>>Telnet через защищенное соединение?
да, все верно



Страницы: 1 вся ветка

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.057 c
2-1339503702
kurolesov
2012-06-12 16:21
2013.03.22
Работа с TBitmap. Как быстрее?


2-1346416774
Bolg
2012-08-31 16:39
2013.03.22
На что указывает указатель?


15-1331755496
Но как?
2012-03-15 00:04
2013.03.22
Модальное окно поверх чужого приложения


2-1337012422
Дмитрий2
2012-05-14 20:20
2013.03.22
Пошаговое выполнение программы


15-1341139478
Дмитрий С
2012-07-01 14:44
2013.03.22
999 рублей это для программистов :)