Подтвердить что ты не робот

Предоставить пароль для команды ssh внутри bash script, без использования открытых ключей и ожидания

Я хочу использовать SSH внутри script, но этот script не будет выполнен на моей машине.

В моей реализации есть два ограничения.

  • Я не могу работать вне стандартов оболочки, поэтому я не могу использовать expect, потому что я не знаю, будет ли он доступен на этой машине.
  • Я не могу ожидать, что у этой машины будет public keys для SSH.

Каковы возможные варианты-решения?

Как я могу предоставить ssh с запрошенным паролем с автоматическим и безопасным способом без добавления дополнительных зависимостей?

Можно ли предоставить пароль внутри script?

Спасибо всем заранее:)

4b9b3361

Ответ 1

Прежде всего: Не ставьте секреты в ясный текст, если вы не знаете, почему это безопасно (например, вы оценили, какой ущерб может быть нанесен злоумышленником, зная секрет).

Если вы в порядке с секретами в script, вы можете отправить с ним ключ ssh и выполнить в оболочке ssh-agent:

#!/usr/bin/env ssh-agent /usr/bin/env bash
KEYFILE=`mktemp`
cat << EOF > ${KEYFILE}
-----BEGIN RSA PRIVATE KEY-----
[.......]
EOF
ssh-add ${KEYFILE}

# do your ssh things here...

# Remove the key file.
rm -f ${KEYFILE}

Преимущество использования ключей ssh ​​заключается в том, что вы можете легко использовать принудительные команды, чтобы ограничить то, что владелец ключа может сделать на сервере.

Более безопасный подход состоял в том, чтобы позволить script запустить ssh-keygen -f ~/.ssh/my-script-key создать частный ключ для этой цели, но тогда вам также понадобится подпрограмма для добавления открытого ключа на сервер.

Ответ 2

Установите sshpass, затем запустите команду:

sshpass -p "yourpassword" ssh -o StrictHostKeyChecking=no [email protected]

Ответ 3

По соображениям безопасности вы должны избегать предоставления пароля в командной строке, иначе любой выполняющий команду ps может видеть ваш пароль. Лучше использовать sshpass утилиту вроде этого:

#!/bin/bash

export SSHPASS="your-password"
sshpass -e ssh -oBatchMode=no [email protected]

Вам может быть интересен Как запустить команду sftp с паролем из Bash script?

Ответ 4

AFAIK нет возможности использовать ключи или ожидать, если вы используете версию командной строки ssh. Но есть привязки библиотек для большинства языков программирования, таких как C, python, php,.... Вы можете написать программу на таком языке. Таким образом, можно будет автоматически передавать пароль. Но note это, конечно, проблема безопасности, поскольку пароль будет сохранен в виде обычного текста в этой программе