SSH переподключиться в цикле путем автоматического ввода пароля (ssh-ключ отключен) - PullRequest
0 голосов
/ 17 апреля 2019

Я хочу найти наиболее безопасный способ сделать это в bash (отключен вход через ssh-ключ на стороне сервера), что означает:

  1. Я не хочу помещать пароль в любой файлпоэтому он должен храниться в памяти при необходимости
  2. Я не хочу, чтобы пароль отображался при выполнении ps
  3. , когда цикл завершен, я хочу удалить пароль.

Я предложил решение сначала получить пароль в интерактивном режиме (команда read), затем повторно использовать его в цикле с sshpass, и, наконец, удалить его с помощью PROMPT_COMMAND.

Цикл завершается, если

  1. пароль неверен или,
  2. нажата первая цифра состояния возврата ssh (неверный регистр пароля) (на моей машинеэто 5)

Меня интересует ваше мнение относительно безопасности.

(Примечание: нам нужны эти '&&' в конце строк последнего блока, чтобы избежатьвыполнение PROMPT_COMMAND, как при очистке SSHPASS.)

SSH_WRONG_PW_STATUS=5;
export SSHPASS= ; 
PROMPT_COMMAND='SSHPASS=' ; 

read -p"Enter password: " -s SSHPASS &&
X= &&
while [ x$SSH_WRONG_PW_STATUS != x$X ] ; do
    sshpass -e ssh user@remotehost && read -t 2 -p"Reconnect? (press $SSH_WRONG_PW_STATUS to quit) " -n1 X || X=${?:0:1};
done
...