Announcement

Collapse
No announcement yet.

SSH-Verbindung mit X11 Forwarding

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • SSH-Verbindung mit X11 Forwarding

    Hallo,

    ich habe gerade ein kleines Vorhaben das ich nicht hinbekomme.
    Es soll in einer Anwendung eine SSH Verbindung mit X11 Forwarding zu einer Linuxkiste aufgebaut werden. Zudem muss die Displayvariable gesetzt und Anwendungen gestartet werden die dann mit Hummingbird Exceed oder Xming auf Windows angezeigt wird.

    Mit Putty ist das ja ohne Probleme möglich, allerdings scheitere ich bei der Umsetzung so etwas in meiner Anwendung einzubauen.

    Als Bibliothek habe ich erstmal SshNet eingesetzt. Das öffnen einer Verbindung und einfache Befehle absetzen funktioniert, allerdings hört es bei der Variable schon auf, die wird nicht gesetzt.

    Hier mal mein Ansatz (Ist nur zum Testen da, also nicht vollkommen ^^):

    Code:
    #Region "Variablen"
        Dim xSSH As SshNet.SshClient
    #End Region
    
    
        Private Sub cmdConnUpDown_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdConnUpDown.Click
    
            If Me.cmdConnUpDown.Text = "Connect" Then
                xSSH = New SshNet.SshClient(Me.txtHost.Text, Me.txtUID.Text, Me.txtPWD.Text)
                xSSH.Connect()
    
                Me.cmdConnUpDown.Text = "Disconnect"
    
                For Each xCon As Control In Me.grpConn.Controls
                    If Not xCon.Name = Me.cmdConnUpDown.Name Then
                        xCon.Enabled = False
                    End If
                Next
            Else
                xSSH.Disconnect()
                xSSH.Dispose()
                xSSH = Nothing
    
                Me.cmdConnUpDown.Text = "Connect"
    
                For Each xCon As Control In Me.grpConn.Controls
                    xCon.Enabled = True
                Next
    
            End If
    
    
    
        End Sub
    
        Private Sub txtinput_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtinput.KeyDown
            If e.KeyCode = Keys.Return Then
                Dim xCmd As SshNet.SshCommand = xSSH.CreateCommand(Me.txtinput.Text)
                Dim result As String
                Dim result2 As String
    
                result = xCmd.Execute
                result2 = xCmd.Error
    
                If Not String.IsNullOrEmpty(result2) Then
                    Me.txtoutput.Text = Me.txtoutput.Text & result2
                End If
    
                Me.txtoutput.Text = Me.txtoutput.Text & result
    
                Me.txtinput.Text = Nothing
    
            End If
        End Sub
    EDIT:
    ------------------------
    Die SSH Lib kann auch eine andere sein, hab da noch die Tamir.SharpSSH und die Routrek.granados getestet, bei allen dreien war das gleiche Ergebniss.

  • #2
    Rechteproblem?
    Christian

    Comment


    • #3
      Nö, mit Putty funktioniert alles wie es soll.
      ich habe gestern noch gelesen das die lib kein X11 Forwarding unterstützt, allerdings stand keine Versionsangabe dabei. Das setzen der Variable sollte dennoch funktionieren.
      Die Variablen werden ja im Userspace gesetzt dazu ist ja jeder in der lage der sich auch anmelden kann.
      Ich habe es auch schon so gemacht das ich die UID des Testusers auf 0 gesetzt habe. Der hat allso alle Privilegien von root.

      Comment


      • #4
        Du könntest den ssh Teil von ChilKat ausprobieren. Die API Referenz läßt erahnen das es das können müsste.

        Comment


        • #5
          Das teil ist allerdings leider Kostenpflichtig

          Comment


          • #6
            So ich habe es nun mal anders gemacht:

            Code:
            Imports Tamir
            
            Public Class TEST_02
            
                Private xSSH As SharpSsh.jsch.JSch
            
                Private Sub cmdConnUpDown_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdConnUpDown.Click
                    If Me.cmdConnUpDown.Text = "Connect" Then
            
                        xSSH = New SharpSsh.jsch.JSch
                        ' xSSH.addIdentity("C:\Users\tputte1\AppData\Local\PUTTY.RND")
            
                        Dim xSession As SharpSsh.jsch.Session = xSSH.getSession(Me.txtUID.Text, Me.txtHost.Text)
                        Dim xConfig As Hashtable = New Hashtable
            
                        xConfig.Add("StrictHostKeyChecking", "no")
            
                        xSession.setConfig(xConfig)
                        xSession.setPassword(Me.txtPWD.Text)
                        'xSession.setX11Host("192.168.0.5:0")
            
            
                        xSession.connect()
            
                        Dim xChannel As SharpSsh.jsch.Channel = xSession.openChannel("exec")
                        xChannel.setXForwarding(True)
                        xChannel.setInputStream(Nothing)
                        xChannel.setOutputStream(Nothing)
            
                        Dim xInStr As SharpSsh.java.io.InputStream = xChannel.getInputStream()
                        Dim xOutStr As SharpSsh.java.io.OutputStream = xChannel.getOutputStream
            
                        xChannel.connect()
            leider bekomme ich nun bei
            Code:
             xSession.connect()
            einen Timeout

            Als lib verwende ich nun die SharpSsh

            Comment

            Working...
            X