Der Befehl funktioniert, aber bei der Ausführung über ein Skript wird ein Fehler mit verweigerter Berechtigung angezeigt.

Der Befehl funktioniert, aber bei der Ausführung über ein Skript wird ein Fehler mit verweigerter Berechtigung angezeigt.

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.shmit 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.

verwandte Informationen