So verwenden Sie SSH während des Buildvorgangs

Manchmal möchte man während eines Buildvorgangs Verbindungen zu unterschiedlichen Systemen herstellen. Zum Beispiel um über SSH ein Deployment-Skript auf einem Remote-System zu starten.

Sehen wir uns an, wie das geht.

Warum SSH verwenden?

Secure Shell (SSH) wird aufgrund seiner Sicherheit, Vielseitigkeit und Effizienz häufig und für verschiedene Zwecke verwendet. Hier sind einige Gründe für die Verwendung von SSH:

  • Sichere Kommunikation. SSH ermöglicht eine verschlüsselte Kommunikation über ein unsicheres Netzwerk (zum Beispiel das Internet) und gewährleistet die Vertraulichkeit und Integrität der Daten während der Übertragung.
  • Authentifizierung. SSH verwendet Public-Key-Kryptografie für die Benutzerauthentifizierung und bietet damit eine sicherere Alternative zur passwortbasierten Authentifizierung. Dadurch wird der Schutz vor unbefugtem Zugriff erhöht.
  • Fernzugriff. Mit SSH können Benutzer*innen sicher auf einen Remote-Server oder -Computer zugreifen, wobei eine Befehlszeile bereitgestellt oder eine Dateiübertragung durchgeführt wird (z. B. mit Tools wie SCP oder SFTP).
  • Tunneling. SSH kann verschlüsselte Tunnel für die Weiterleitung beliebiger Netzwerkverbindungen bereitstellen, um einen sicheren Zugriff auf Dienste wie Datenbanken oder Webserver in entfernten Netzwerken zu ermöglichen.
  • Schlüsselverwaltung. SSH unterstützt die Verwendung von SSH-Schlüsseln, die die Authentifizierung vereinfachen und die Sicherheit erhöhen. Außerdem können durch Schlüsselpaare die Zugangsberechtigungen verwaltet werden.

So laden Sie einen SSH-Schlüssel in TeamCity hoch

Gehen Sie zu Edit configuration | Build Steps, um einen schnellen Blick auf Ihre Build-Schritte zu werfen.

tutorials-img

Stellen Sie sich vor, Sie möchten einen Build-Schritt hinzufügen, der über die Befehlszeile ein Deployment ausführt. Dazu stellt TeamCity über SSH eine Verbindung zu einem Remote-Server her und führt auf diesem Server Befehle aus, etwa um eine Datei von Amazon S3 herunterzuladen und auszuführen. Damit die SSH-Verbindung funktioniert, müssen Sie einen SSH-Schlüssel bereitstellen.

tutorials-img

Die Frage hierbei lautet: Wie gelangt der SSH-Schlüssel auf den Build-Agent, wenn er nicht bereits in Ihrem Agent-Image enthalten ist?

Dazu müssen wir den Befehlszeilen-Build-Schritt loswerden. To do that, click on the Runner type drop-down menu. Hier sehen Sie zwei Optionen: SSH Exec und SSH Upload.

SSH Exec bietet sich an, wenn Sie etwas auf einem Remote-System ausführen möchten. SSH Upload hilft Ihnen, Dateien sicher auf einen Server hochzuladen.

Wir wählen nun die Option SSH Exec aus und geben das Ziel sowie die Befehle für den Runner ein.

tutorials-img

Unter Authentication method haben wir mehrere Möglichkeiten, um die Quelle des SSH-Schlüssels festzulegen.

tutorials-img

Uploaded key: Der Schlüssel wird auf den TeamCity-Server hochgeladen. Der Server verschlüsselt ihn, sendet sie an den Build-Agent für die Dauer des Buildvorgangs und löscht ihn nach Abschluss des Buildvorgangs wieder.

Default private key und Custom private key: Wählen Sie diese Option, wenn ein Standard-Privatschlüssel an einem bestimmten Speicherort auf Ihrem Build-Agent vorinstalliert ist.

Sie können auch eine Kombination aus Benutzernamen und Passwort wählen oder sogar einen ausgeführten SSH-Agenten verwenden. Weitere Informationen zu SSH Exec finden Sie in unserer Dokumentation.

In diesem Tutorial verwenden wir die Option Uploaded key. Wir verwenden den Benutzernamen teamcity-deploy und überspringen das Setzen einer Passphrase. Dann laden wir den SSH-Schlüssel hoch.

tutorials-img

Um den SSH-Schlüssel hochzuladen, gehen wir zu Buildpipelines project | SSH Keys. Danach wählen wir den privaten Schlüssel für unseren Server aus. Klicken Sie auf Upload SSH Key und wählen Sie eine Datei auf Ihrem Computer aus.

tutorials-img

Gehen Sie danach zurück zu Build steps | SSH Exec und wählen Sie den privaten Schlüssel aus, den Sie gerade hochgeladen haben. Speichern Sie die Änderungen mit Save und führen Sie den Build aus.

tutorials-img

Sobald der Buildvorgang abgeschlossen ist, öffnen Sie das Build Log und überprüfen Sie die Ausgabe des Build-Schritts SSH Exec. Hier können wir sehen, dass TeamCity den Befehl ausgeführt hat, den Sie beim Konfigurieren des Build-Schritts eingegeben haben. Sie sehen auch das Ergebnis des Befehls echo 'running deploy.sh...'.

tutorials-img

Das war’s!