Проблема не связана с аутентификацией с открытым ключом, которую Вы настроили. Помимо Ваших закрытых и открытых ключей, SSH также сохранит ключ хоста каждого хоста, с которым Вы соединяетесь в Вашем ~/.ssh каталог под файлом, названным known_hosts. Ошибки, которые Вы видите, от попыток SSH первоначально создать этот файл.
Читать man bash
, и введите /Parameter Expansion
(точно как это, с ведущей наклонной чертой). Это будет искать соответствующий раздел из той страницы справочника; возможные модификаторы расширения объяснены там.
В дополнение к другому прекрасному ответу относительно консалтинга с документацией я всегда обращаюсь к средству отладки Bash для наблюдения то, что продолжается.
Можно включить его и отключить его путем обертывания команд интереса к блоку как так:
$ set -x; command_to_watch; set +x
$ set -x; export JDK_HOME=${JDK_HOME:-"/some/path/java-1.7"}; set +x
+ export JDK_HOME=/some/path/java-1.7
+ JDK_HOME=/some/path/java-1.7
+ set +x
Здесь Вы видите что переменная $JDK_HOME
устанавливается на /some/path/java-1.7
. Однако, если мы устанавливаем его на что-то еще:
$ export JDK_HOME=/a/path
$ echo $JDK_HOME
/a/path
И выполненный эта команда снова:
$ set -x; export JDK_HOME=${JDK_HOME:-"/some/path/java-1.7"}; set +x
+ export JDK_HOME=/a/path
+ JDK_HOME=/a/path
+ set +x
Мы видим, что это ничего не сделало, ведя нас к тому, что, если переменная уже установлена, эта команда оставит ее в покое, иначе это установит его со значением, /some/path/java-1.7
.
Подтверждение нашего подозрения в странице справочника Bash:
${parameter:-word}
Use Default Values. If parameter is unset or null, the expansion of word
is substituted. Otherwise, the value of parameter is substituted.
Я нашел Ссылочные Карты в Приложении B Усовершенствованного Руководства по созданию сценариев Bash очень полезными. Соответствующей таблицей для Вашего примера была бы Таблица b-4: Замена Параметра и Расширение.