SCP in Jenkins nicht möglich

SCP in Jenkins nicht möglich

Ich bin ein neuer Benutzer von Jenkins. Ich versuche, als Teil des Build-Schritts in Jenkins ein Shell-Skript auszuführen. Dieses Skript enthält einen Befehl, der eine Datei auf einen Remote-Server scpüberträgt ..tar

Wenn ich dieses Skript ausführe, funktioniert es einwandfrei und gibt die gewünschte Ausgabe aus. Wenn es jedoch über Jenkins ausgeführt wird, erhalte ich eine Fehlermeldung:

Host key verification failed.
lost connection

Bis zum scpBefehl wird das Skript erfolgreich ausgeführt, danach wird der scpSchritt übersprungen.

Ich kann nicht einmal über Jenkins per SSH oder SCP auf den Remote-Server zugreifen.

Bitte geben Sie an, was hier getan werden kann. Welche Plugins müssen dafür installiert werden sshund scp?

Antwort1

Der Hosts-Schlüssel muss zur Datei „known_hosts“ des Clients hinzugefügt werden, in Ihrem Fall des Benutzers, unter dessen Konto der Jenkins-Server ausgeführt wird. Sie müssen also Folgendes tun:

  1. SSH-Login für den Jenkins-Benutzer aktivieren
  2. Melden Sie sich als Jenkins an.
  3. SSH zum Remote-Server
  4. Beantworten Sie die Frage „Soll die Serveridentität hinzugefügt werden...“ mit „Ja“.

Dann sind Sie fertig. Anschließend kann das Skript scp mit dem öffentlichen Schlüssel des Benutzers ausführen.

Antwort2

Kurz gesagt, Sie müssen den SSH-Schlüssel des Jenkins-Benutzers zu dem Server hinzufügen, bei dem Sie sich als dieser Benutzer anmelden möchten.

Einzelheiten:

Melden Sie sich beim Jenkins-Server an und führen Sie dann Folgendes aus:

sudo passwd jenkins

Geben Sie das Kennwort, das Sie dem Jenkins-Benutzer geben möchten, zweimal ein und dann:

su jenkins
cd
ssh-keygen

Drücken Sie für alle Optionen die Eingabetaste. Kopieren Sie dann die neuen SSH-Schlüssel auf den Server, auf den Sie kopieren möchten:

scp .ssh/id_rsa.pub user@newserver:/home/user/jenkins_key

Wenn Sie dazu aufgefordert werden, drücken Sie „Ja“, um fortzufahren.

Melden Sie sich dann als dieser Benutzer beim Server an und gehen Sie folgendermaßen vor:

ssh user@server

und geben Sie das Passwort ein, dann

cd .ssh
ls -lah

wenn keine „authorized_keys“ vorhanden sind, dann:

cd .ssh
touch authorized_keys

Wenn die Datei „authorized_keys“ vorhanden ist, ignorieren Sie den obigen Schritt. Dann:

cd
cat jenkins_key >> .ssh/authorized_keys
rm -rf ./jenkins_key

Beenden/vom Server abmelden. Dann zurück auf den Jenkins-Server:

ssh user@newserver

Sie sollten sich direkt anmelden, ohne Aufforderung oder Eingabe Ihres Passworts

Führen Sie nun den SCP-Job erneut in Jenkins aus

Antwort3

Ich habe eine Lösung für das Problem gefunden. 1. Ich habe ein neues shh-Schlüsselpaar unter dem Jenkins-Benutzer erstellt. 2. Den .pub-Schlüssel zum Remote-Server hinzugefügt. Beim Ausführen von SSH vom Jenkins-Server wird der neu generierte private Schlüssel verwendet. Jetzt funktionieren sowohl SSH als auch SCP als Teil des Build-Schritts. Vielen Dank

Antwort4

SSH-Agent-Plugin

Mit diesem Plugin können Sie Builds über einen SSH-Agenten in Jenkins mit SSH-Anmeldeinformationen versorgen. https://plugins.jenkins.io/ssh-agent/

Wenn dieser Fehler erneut auftritt, führen Sie diesen Befehl einmal vom Jenkins-Job aus aus:

ssh -o StrictHostKeyChecking=no user@host hostname

Danach können Sie einfach ssh vom Jenkins-Job aus ausführen:

ssh user@host hostname

verwandte Informationen