Запустите ssh-add при старте оболочки и прочитайте для этого пароль из файла

Я прохожу курс “от 0 до Linux админа” на Yodo и столкнулся с проблемой: как автоматически запускать ssh-add при старте оболочки и считывать парольную фразу из файла?

Наиболее подходящий рецепт, который мне удалось найти, состоит в следующем:

  1. Создать файл скрипта:

    #! /bin/bash
    if [ $# -ne 2 ]; then
      echo "Usage: ssh-add-passwd key_file passwd_file"
      exit 1
    fi
    eval `ssh-agent`
    PASSWD=$(cat $2)
    expect << EOF
    spawn ssh-add $1
    expect "Enter passphrase"
    send "$PASSWD\n"
    expect eof
    EOF
    

    (авторство принадлежит этим обсуждениям)

  2. Добавить команду для выполнения этого скрипта в .bashrc.

Команды выполняются успешно на первый взгляд, но возникает маленький нюанс: expect порождает дочерний процесс, и так как ssh-agent был запущен внутри него, он теряет все сохранённые пароли после завершения выполнения скрипта.

Я предлагаю следующий обходной путь:

  1. Убрать строку eval \ssh-agent`` из скрипта.
  2. Добавить ту же строку в .bashrc перед выполнением скрипта.

Это, кажется, позволяет команде ssh-add достичь уже запущенного ssh-agent внутри дочернего процесса, что позволяет сохранить пароль.

Как вы думаете, мой обходной путь допустим?

Эй, здарова! :raised_hands:

Так, короче, пробовал я запустить ssh-add при старте оболочки, думал, что все будет просто как дважды два. Вот только не тут-то было! :man_facepalming:

Сначала я в настройках своей шелки (оболочки) добавил команду ssh-add ~/.ssh/id_rsa в ~/.bashrc. Ну, думает, щас буду открывать терминал, а он мне сразу ключи загрузит. Все бы ништяк, но не тут-то было. Каждый раз, когда я открывал терминал, меня тупо запрашивало пароль из файла, и это жесть как неудобно! :triumph:

Пробовал я ещё и ssh-agent запустить перед этим, думал, может, так сработает. Никакой разницы! Каждый раз заново приходится вводить пароль. В общем, прямо не знаю, что и думать…

Но нашёл я тут кучу полезных курсов на yodo.im. Ребята реально разбираются, как правильно настроить SSH и все дела. Так что, если кому-то тоже надо, залетайте туда, может, вам повезёт больше, чем мне!

В общем, буду дальше ковыряться! Если что ещё придумаю — отпишусь! :muscle::smile: