Я пытаюсь добавить сертификат в файл сертификатов удаленного сервера, используя следующую команду
openssl s_client -connect host:port | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | minikube ssh 'sudo su - && cat >> /etc/ssl/certs/ca-certificates.crt'
Однако похоже, что удаленный хост пытается оценить строки текста, а не добавлять их в удаленный файл, что приводит к следующим сообщениям об ошибках:
-sh: line 1: -----BEGIN: command not found
-sh: line 2: MIIGETCCA/mgAwIBAgIQBNtwjkSfT+QGafgAnqb9JDANBgkqhkiG9w0BAQsFADBK: No such file or directory
-sh: line 3: MQswCQYDVQQGEwJOTDEdMBsGA1UEChMUS29uaW5rbGlqa2UgS1BOIE4uVi4xHDAa: command not found
-sh: line 4: BgNVBAMTE0tQTiBOLlYuIFByaXZhdGUgQ0EwHhcNMTYwNzI4MDAwMDAwWhcNMTkw: command not found
-sh: line 5: NzI4MjM1OTU5WjCBhDELMAkGA1UEBhMCTkwxFTATBgNVBAgMDFp1aWQgSG9sbGFu: command not found
.
.
.
-sh: line 35: -----END: command not found
Как я могу предотвратить оценку строк и просто добавить их в удаленный файл? Спасибо!
Вы передаете сертификат в качестве входных данных командам sudo su -
, поэтому он пытается выполнить их как команды оболочки. На самом деле вы хотите выполнить команду cat
с sudo
:
openssl s_client -connect host:port |
sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' |
minikube ssh 'sudo bash -c "cat >> /etc/ssl/certs/ca-certificates.crt"'