добавление к удаленному файлу через SSH приводит к построчному расширению

Я пытаюсь добавить сертификат в файл сертификатов удаленного сервера, используя следующую команду

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

Как я могу предотвратить оценку строк и просто добавить их в удаленный файл? Спасибо!

0
02.03.2017, 13:38
1 ответ

Вы передаете сертификат в качестве входных данных командам 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"'
2
28.01.2020, 02:34

Теги

Похожие вопросы