Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

Подскажите компонент для 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.52 MB
Время: 0.063 c
15-1344353459
wl
2012-08-07 19:30
2013.03.22
Как бы реализовали архитектуру клиента?


15-1328942551
AV
2012-02-11 10:42
2013.03.22
Нужен ли XP mode, если на семерку хочу виртуалку поставить?


2-1345815783
Разведка
2012-08-24 17:43
2013.03.22
немогу найти причину ошибки


2-1342074698
Sergey
2012-07-12 10:31
2013.03.22
просьба к участникам быть взаимовежливыми


2-1331575099
Дмитрий
2012-03-12 21:58
2013.03.22
Проблема к кеширующим прокси на основе IndyHttpProxyServer





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский