GitHub Copilot-CLI via Remote mit SSH aus QF-Test nutzen

Irfan Yigit, ASC Technologies

Mit QF-Test 10 ist es möglich, KI-Modelle von Drittanbietern wie GitHub Copilot in QF-Test zu integrieren. Im Fall von Copilot ist es dafür normalerweise nötig, Copilot CLI auf dem gleichen System wie QF-Test installiert zu haben.

Es gibt aber Situationen, wo sie Copilot CLI aus technischen Gründen oder Sicherheitsgründen nicht auf Ihren Testmaschinen installieren können.

Für solche Fälle zeigt Ihnen dieser Gastbeitrag von langjährigem QF-Test Anwender Irfan Yigit, wie Sie Copilot auf nur einer zentralen Maschine aufsetzen und eine SSH-Netzwerkverbindung zu Ihren Testmaschinen herstellen können. Dann können Sie Ihre GitHub Copilot KI-Modelle über SSH mit QF-Test nutzen.

Voraussetzung

Um dieses Vorhaben auf einem Windows-System zu realisieren, wird OpenSSH benötigt. Daher muss zwingend OpenSSH auf der Client-VM und der Ziel-VM installiert sein.

Auf der Client-VM muss zusätzlich QF-Test (10.0 oder neuer) installiert sein. Auf der Ziel-VM muss eine aktuelle GitHub Copilot-CLI-Installation existieren und das GitHub-Login (/login) in der SSH-Umgebung durchgeführt worden sein.

Um GitHub Copilot-CLI per Remote (SSH) reibungslos nutzen zu können, wird ein SSH-Key zwingend benötigt, weil OpenSSH bei automatisierten Remote-Aufrufen via SSH (wie z.B. aus QF-Test heraus) keine SSH-Passwort-Prompts bedienen kann. SSH-Key-Authentifizierung wird benötigt, um eine passwortlose, stabile SSH-Verbindung herzustellen.

Schritt-für-Schritt-Anleitung

Vorbereitung auf der Client-VM

1. .ssh-Verzeichnis anlegen (falls nicht vorhanden, z. B. C:\Users\Administrator\.ssh)

New-Item -ItemType Directory -Path "$env:USERPROFILE\.ssh" -Force | Out-Null

2. SSH-Key (ed25519) auf der Client-VM erzeugen (ohne Passphrase)

ssh-keygen -t ed25519 -C "qftest-remote" -f "$env:USERPROFILE\.ssh\id_ed25519"
  • Passphrase einfach leer lassen (zweimal Enter).
  • Der erzeugte öffentliche Key (…/.ssh/id_ed25519.pub) wird später auf der Ziel-VM benötigt.

Vorbereitung auf der Ziel-VM

1. Access Control Lists (ACL) korrekt setzen

Windows OpenSSH akzeptiert Schlüssel nur, wenn die Datei an der richtigen Stelle liegt und die Berechtigungen mit korrekten ACLs gesetzt sind. Die Datei C:\ProgramData\ssh\administrators_authorized_keys wird wie folgt erstellt und abgesichert:

icacls C:\ProgramData\ssh\administrators_authorized_keys /inheritance:r
icacls C:\ProgramData\ssh\administrators_authorized_keys /grant 'Administrators:F'
icacls C:\ProgramData\ssh\administrators_authorized_keys /grant 'SYSTEM:F'
Restart-Service sshd

2. Public-Key eintragen

Den Inhalt der id_ed25519.pub von der Client-VM in die Datei administrators_authorized_keys auf der Ziel-VM einfügen und speichern (jeweils zeilenweise).

3. Copilot-CLI in der SSH-Umgebung auf der Ziel-VM einmalig anmelden

Copilot speichert seine Login-Daten lokal im jeweiligen Benutzerprofil. Das Login muss zuvor durchgeführt worden sein – entweder direkt auf der Ziel-VM oder per SSH, je nachdem ob unterschiedliche Windows-Benutzer verwendet werden.

Nach erfolgreich gespeichertem Copilot-Login in der SSH-Umgebung kann Copilot vollständig skriptgesteuert per Remote (via SSH) aus QF-Test heraus ausgeführt werden.

Folgende Eingabe in PowerShell ist nötig, wenn alle Client-VMs mit dem gleichen Benutzer und der gleichen SSH-Umgebung interagieren sollen:

  1. SSH direkt auf die Ziel-VM: ssh -i ~/.ssh/id_ed25519 Administrator@<Ziel-IP>
  2. Copilot starten: copilot
  3. Login starten: /login
  4. Den Device-Code im Browser bestätigen.

Funktionstest (Client-VM → Ziel-VM, headless)

Auf der Client-VM folgenden Befehl in PowerShell ausführen:

ssh -i ~/.ssh/id_ed25519 Administrator@<Ziel-IP> "copilot -p 'Sag Hallo' --stream on"

Troubleshooting

SSH-Key-Login von der Client-VM aus testen

Sicherstellen, ob SSH ohne Passwort mit SSH-Key funktioniert (Voraussetzung für QF-Test):

ssh -i $env:USERPROFILE\.ssh\id_ed25519 Administrator@<Ziel-IP> 'echo OK'
  • Wenn OK erscheint → Key-Authentifizierung funktioniert.
  • Wenn Fehler: SSH-Keys oder ACLs auf der Ziel-VM prüfen.

Copilot-CLI über SSH an QF-Test anbinden

Sobald alles funktioniert folgen Sie dieser Anleitung ab Schritt 2:

Machen Sie lediglich die folgende Anpassung am ai.addCustomModel-Skript (fügen Sie den für Sie passenden User, Pfad und IP ein):

ai.addCustomModel("GitHub Copilot", (msg) -> {
    def remoteUser = "Administrator"
    def remoteHost = "192.168.0.2" // IP of target VM
    def remoteCmd = "cmd /c \"C:/Users/Administrator/AppData/Local/GitHubCopilotCLI/copilot.exe --silent --stream off --model claude-sonnet-4.6 --prompt \\\"${msg}\\\"\""
    def cmd = [
        "ssh",
        "-o",
        "StrictHostKeyChecking=no",
        "${remoteUser)@${remoteHost)",
        remotecmd
    ]

    def proc = cmd.execute()
    proc.outputStream.close()
    proc.waitFor()

    return proc.in.text.replace("● ", "")
})

Erfahren Sie mehr über die KI-Integrationen in QF-Test 10:

Wir verwenden Cookies zur anonymisierten Auswertung Ihres Besuchs auf unserer Webseite durch "Matomo". Dafür benötigen wir Ihr Einverständnis, welches für zwölf Monate gilt.

Cookie-Konfiguration

Funktionale Cookies

Wir verwenden funktionale Cookies, um die Basisfunktionalität der Webseite zu gewährleisten.

Performance- und Statistik-Cookies

Wir verwenden Matomo zur Analyse und Optimierung unserer Webseite. Cookies erlauben eine anonyme Erfassung der Informationen und helfen uns, Ihnen einen benutzerfreundlichen Besuch unserer Webseite zu bieten.

Cookie-Details
Bezeichnung Anbieter Gültigkeitsdauer Typ Verwendung
_pk_id Matomo 13 Monate HTTP Enthält eine eindeutige jedoch pseudonymisierte Matomo-interne Besucher-ID zur Erkennung wiederkehrender Besucher.
_pk_ref Matomo 6 Monate HTTP Wird verwendet, um zu tracken, von welcher Website der anonymisierte Benutzer auf die Website gekommen ist.
_pk_ses Matomo 1 Tag HTTP Das Session Cookie von Matomo wird verwendet, um die Seitenanforderungen des Besuchers während der Sitzung zu verfolgen.
_pk_testcookie Matomo Session HTTP Zur Prüfung, ob der Browser des Besuchers Cookies unterstützt.
_pk_cvar Matomo 30 Minuten HTTP Kurzzeit-Cookie für temporäre Besuchsdatenspeicherung.
_pk_hsr Matomo 30 Minuten HTTP Kurzzeit-Cookie für temporäre Besuchsdatenspeicherung.