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, oder wenn Sie mehrere paralelle QF-Test Instanzen über den Daemon-Modus laufen lassen möchten.

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.