Вопрос: SSH Как игнорировать IdentityFile не найдены ошибки?


В настоящее время у меня это в файле .ssh / config:

Host *
AskPassGUI no
IdentityFile ~/.ssh/%r@%h
IdentityFile ~/.ssh/%h
IdentityFile ~/.ssh/id_dsa

Когда я нахожу ssh в хост, что у меня нет файла ключа для входа в систему, но я также получаю эти ошибки:

no such identity: /Users/user/.ssh/user@example.com: No such file or directory
no such identity: /Users/user/.ssh/example.com: No such file or directory

В идеале, я бы хотел, чтобы ssh проверял файлы, но не выдавал ошибку, если какой-либо из них не может быть найден. Идея состоит в том, чтобы иметь возможность вводить секретные ключи с именем «user@example.com» или «example.com» в мой .ssh-каталог и использовать их при входе в систему с этим коммитом user / host, но не жаловаться и затем войдите в систему, если файл отсутствует. Я не хочу использовать Host директивы, описанные в этот ответ, потому что у меня много ключевых файлов, и я бы предпочел не добавлять их в папку, а затем редактировать файл конфигурации и добавлять директивы хоста для каждого из них.

Возможно ли это?


5
2018-03-18 11:55


Источник


Эти ошибки или предупреждения? - Tom O'Connor
@ TomO'Connor Я полагаю, что они являются предупреждениями, поскольку логин не на самом деле терпит неудачу. - bmacs


Ответы:


После просмотра исходного кода openssh, кажется, что ответ выглядит следующим образом:

OpenSSH считает, что строки IdentityFile в ~ / .ssh / config должны быть «предоставлены пользователю». Если пользователь не предоставил IdentityFile, его невозможно найти, он регистрирует предупреждение на консоли. См. Функцию load_identity_file в sshconnect2.c.

К сожалению, это невозможно сделать в точку что я хочу сделать, но существует несколько обходных решений:

Можно было бы добавить линию LogLevel ERROR в файл ~ / .ssh / config. Это на один шаг ниже уровня журнала по умолчанию INFO, Я не выбрал это, так как не был уверен, какие другие предупреждения он подавит.

Опция, которую я выбрал, заключалась в том, чтобы добавить следующие строки в файл / etc / ssh_config:

Host *
    IdentityFile ~/.ssh/%r@%h
    IdentityFile ~/.ssh/%h

    # The lines below maintain ssh's default behavior:
    IdentityFile ~/.ssh/identity
    IdentityFile ~/.ssh/id_rsa
    IdentityFile ~/.ssh/id_dsa

Затем я удалил IdentityFile строки из моего файла ~ / .ssh / config.

Эти строки не считаются «предоставленными пользователем», когда они находятся в / etc / ssh_config, поэтому ничего не регистрируется, когда файл не может быть найден.


6
2018-03-18 22:36



Вы получаете +1 для просмотра источника - Jacob