
Der folgende Befehl funktioniert von meinem lokalen Host aus einwandfrei und ich erhalte die gewünschte Ausgabe. Siehe unten
$ ssh -o ConnectTimeout=7 -o BatchMode=yes [email protected] "echo WORKS;exit"
Output:
WORKS
Nun füge ich diesen Befehl in eine Skriptdatei test.sh
mit ausreichenden Ausführungsberechtigungen ein
$ cat test.sh
segment=$(ssh -o ConnectTimeout=7 -o BatchMode=yes [email protected] "echo WORKS;exit")
echo "SEGMENT $segment"
Ich erhalte nicht die gewünschte Ausgabe. Tatsächlich erhalte ich den folgenden Fehler:
$ ./test.sh
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
SEGMENT
ich habe erwartet
SEGMENT WORKS
Nun ist der Fehler „Berechtigung verweigert“ nicht mehr vorhanden, aber
Können Sie bitte einen Vorschlag machen, was das Problem sein könnte?
Antwort1
Das Problem war, dass ich einen Alias verwendet habe
alias ssh=ssh -i /app/private_key
im Benutzerprofil gespeichert. Diese Einstellung hat jedoch in einem Shell-Skript keine Auswirkung (sieheHiereg), also musste ich explizit aufrufen
ssh -i app/private_key
im Skript. Dadurch wurde das Problem behoben.