Ich folgte gitlab Dokumentation auf , um die Verbindung zu meinem Remote-Server einzurichten, die wie erwartet funktioniert.Gitlab CI - Setup SSH Schlüssel in Bash
before_script:
- which ssh-agent || (apt-get update -y && apt-get install openssh-client -y)
- eval $(ssh-agent -s)
- ssh-add <(echo "$SSH_PRIVATE_KEY")
- mkdir -p ~/.ssh
- '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
Allerdings würde Ich mag diese Befehle in einem separaten Skript wie folgt setzen:
before_script:
- bash ./scripts/ssh-config.sh
ssh-config.sh
#!/bin/bash
which ssh-agent || (apt-get update -y && apt-get install openssh-client -y)
eval $(ssh-agent -s)
ssh-add <(echo $SSH_PRIVATE_KEY)
mkdir -p ~/.ssh
[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config
Wenn auf der Fernbedienung zu verbinden versuchen, Server gibt es den folgenden Fehler:
$ bash scripts/ssh-config.sh
/usr/bin/ssh-agent
Agent pid 15
Identity added: /dev/fd/63 (/dev/fd/63)
$ ssh [email protected] "touch test"
Warning: Permanently added 'example.com' (ECDSA) to the list of known hosts.
Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,password).
Das Skript wurde korrekt ausgeführt und hat dieselben Protokolle wie bei der vorherigen Methode ausgegeben. Irgendwelche Ideen?
Ich vermute, es ist mit der Tatsache zu tun, sind Sie in einer Subshell des zweite Weg laufen. Nachdem das Skript beendet wurde, wird es wahrscheinlich auch von ssh-agent ausgeführt. – IBam