ssh client mit synapse

Alle Fragen zur Netzwerkkommunikation
Benutzeravatar
six1
Beiträge: 782
Registriert: Do 1. Jul 2010, 19:01

Re: ssh client mit synapse

Beitrag von six1 »

Thema ist ja wegen des Preises durch... aber DEVART --> "SecureBridge" verwendet keine DLL
Alles im Source der Komponenten!
Gruß, Michael

Warf
Beiträge: 1908
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: ssh client mit synapse

Beitrag von Warf »

six1 hat geschrieben:Thema ist ja wegen des Preises durch... aber DEVART --> "SecureBridge" verwendet keine DLL
Alles im Source der Komponenten!

Das ist für mich ein gewaltiger Grund dagegen. Grade bei sicherheitskritischen anwendungen möchte ich die maximale sicherheit haben. Die OpenSSL (von der die libssl stammt) ist die meistgetestete Security Library die es gibt. An der Entwickeln hunderte experten, und sie wird von millionen von nutzern täglich benutzt. Das ist der absolute gold standard an Sicherheit, und alles was weniger getestet wird kann als strikt schlechter angesehen werden.

Und sorry, ich weiß nicht wies bei euch aussieht, aber geld zu bezahlen für eine schlechtere komponente ist für mich nicht drin. Nur um das mal festzuhalten, wenn man auf Linux openSSH verwendet, verwenden die intern auch die LibreSSL (Fork von OpenSSL), und die hätten theoretisch die manpower um das selbst zu implementieren, sie sind aber nicht blöd und wissen das die OpenSSL zu benutzen der einzig vernünftige weg ist.

Außerdem, man kann die OpenSSL auch statisch bauen, dann kann man sie statisch gegen linken und benötigt keine DLL

Benutzeravatar
six1
Beiträge: 782
Registriert: Do 1. Jul 2010, 19:01

Re: ssh client mit synapse

Beitrag von six1 »

Ähmm, ja... natürlich muss die sshlib installiert werden!
Die wird nicht mitgeliefert, aber SecureBridge baut natürlich darauf auf.

Andere DLL's oder Libs sind aber nicht von Nöten...
Gruß, Michael

Warf
Beiträge: 1908
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: ssh client mit synapse

Beitrag von Warf »

six1 hat geschrieben:Ähmm, ja... natürlich muss die sshlib installiert werden!
Die wird nicht mitgeliefert, aber SecureBridge baut natürlich darauf auf.

Andere DLL's oder Libs sind aber nicht von Nöten...


Das macht natürlich viel mehr Sinn, ansonsten wäre das echt blöd

Warf
Beiträge: 1908
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: ssh client mit synapse

Beitrag von Warf »

willi4willi hat geschrieben:Ich habe mich auch erfolglos mit dem Thema "SSH mit Synapse" herumgeschlagen und bin dann auf die Verwendung von externen Tools ausgewichen, die ich mit TProcess aufrufe.
Z.B. unter Windows gibt es von putty auch pscp, pftp und plink. Die sind nur wenige kbyte groß.
Ich weiß, es hört sind nicht besonders elegant an, aber ob ich nun eine DLL verwende oder diese Programme, ist für mich kein großer Unterschied.


Sowas ähnliches hab ich ihm (über skype) auch vorgeschlagen, funktioniert an sich recht gut da putty sowohl für Windows, als auch für Linux und MacOS verfügbar ist, und überall das selbe interface bietet (glaub mir die apple openSSH version aufzurufen ist ein absoluter krampf, da die passworteingabe nicht von der ssh exec sondern vom OS übernommen wird, und du daher nicht automatisiert ein passwort eingeben kannst). Und ansonsten sind verschiedene OpenSSH versionen auch fürn arsch, mit putty ist das super einfach, vor allem weil man putty unter mac mit homebrew, unter linux über den paketmanager installieren kann, und unter windows einfach die plink.exe ins selbe verzeichnis legen kann.

Hier das beispiel was ich ihm geschickt hatte (natürlich ist sleep zum warten bis daten da sind nicht unbedingt die beste idee)

Code: Alles auswählen

procedure TForm1.Button1Click(Sender: TObject);
var
  sl: TStringList;
  port: longint;
  errOut, pw: string;
begin
  if FSSHProcess.Running then
  begin
     // Alten prozess beenden
    FSSHProcess.CloseInput;
    FSSHProcess.WaitOnExit;
    sl := TStringList.Create;
    try
     // Alles was noch nicht gelesen wurde rauslesen
      sl.LoadFromStream(FSSHProcess.Output);
      OutMemo.Lines.AddStrings(sl);
    finally
      sl.Free;
    end;
  end;
  FSSHProcess.Options := FSSHProcess.Options + [poUsePipes];
  FSSHProcess.Executable := 'plink';
  FSSHProcess.Parameters.Clear;
// -T interpretiere input nicht als user terminal
  FSSHProcess.Parameters.Add('-T');
  if TryStrToInt(PortEdit.Text, port) then
  begin
    FSSHProcess.Parameters.add('-P');
    FSSHProcess.Parameters.add(port.ToString);
  end;
 
  pw := PassEdit.Text;
  if not pw.IsEmpty then
  begin
    FSSHProcess.Parameters.add('-pw');
    FSSHProcess.Parameters.Add(pw);
  end;
  FSSHProcess.Parameters.Add('%s@%s', [UserEdit.Text, ServerEdit.Text]);
 
  FSSHProcess.Execute;
// warte um verbindung aufzubauen
  sleep(200);
// Lese Error
  SetLength(ErrOut, FSSHProcess.Stderr.NumBytesAvailable);
  FSSHProcess.Stderr.Read(errOut[1], errOut.Length);
// Falls error: Wenn mit Pass anfängt ist es die PasswortAbfrage in OpenSSH (dabei wird Passwor: auf stderr geschrieben)
// Ansonsten (sollte mit ssh: anfangen) ist es ein fehler
  if (errOut.Length > 0) then
  begin
    ShowMessage('Error: ' + errOut);
    FSSHProcess.CloseInput;
    FSSHProcess.WaitOnExit;
    Exit;
  end;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
var
  cmd: String;
  sl: TStringList;
begin
  cmd:=CmdEdit1.Text+#10;
  // Kein command oder nicht connected
  if (cmd = #10) or not FSSHProcess.Running then exit;
  // Sende command
  FSSHProcess.Input.Write(cmd[1], cmd.Length);
  // Warte auf ergebnis (das geht schlauer als ein fester sleep)
  Sleep(200);
  sl := TStringList.Create;
  try
   // Lese den output
    sl.LoadFromStream(FSSHProcess.Output);
    OutMemo.Lines.AddStrings(sl);
  finally
    sl.Free;
  end;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  FSSHProcess := TProcess.Create(self);
end;
 
procedure TForm1.FormDestroy(Sender: TObject);
begin
  if FSSHProcess.Running then FSSHProcess.CloseInput;
end;

reiter
Beiträge: 217
Registriert: Sa 18. Nov 2017, 16:58

Re: ssh client mit synapse

Beitrag von reiter »

Ja nochmal vielen Dank an dich
Ich muss das alles nochmal durchtesten, weil ich im Hintergrund dann ssh Befehle habe , bzw im Moment läuft das alles über Telnet
Was mir dabei vorschwebt ist ein Telnet Client (der ja schon existiert) und man das Switchen kann über ne checkbox oder RadioButton auf ssh

Antworten