Должен ли ssh-ключ иметь имя id_rsa?

По умолчанию ssh выполняет поиск id_dsa и id_rsa файлы. Ключи не обязательно должны быть названы так, вы можете назвать их mykey точно так же, или даже поместите его в другой каталог. Однако, если вы делаете что-либо из этого, вам нужно явно ссылаться на ключ в команде ssh следующим образом:

ssh user@server -i /path/to/mykey

Если команда не принимает -i, например sshfs, используйте IdentityFile вариант:

sshfs -o IdentityFile=/path/to/mykey user@host:/path/on/remote /mountpoint

как это работает

При генерации ключа вы получите два файла: id_rsa (закрытый ключ) и id_rsa.pub (открытый ключ). Как следует из их названий, закрытый ключ должен храниться в секрете, а открытый ключ может быть опубликован для всеобщего сведения.

Аутентификация с открытым ключом работает с открытым и закрытым ключами. И клиент, и сервер имеют свои собственные ключи. При установке openssh-server открытый и закрытый ключи сервера генерируются автоматически. Что касается клиента, вам придется сделать это самостоятельно.

Когда вы (клиент) соединяетесь с сервером, происходит обмен открытыми ключами. Вы получите один сервер, а сервер - ваш. При первом получении открытого ключа сервера вам будет предложено принять его. Если этот открытый ключ со временем изменится, вы будете предупреждены, потому что происходит возможная атака MITM (Man in the middle), перехватывающая трафик между клиентом и сервером.

Сервер проверяет, разрешено ли вам подключаться (определено в /etc/ssh/sshd_config) и если ваш открытый ключ указан в ~/.ssh/authorized_keys файл. Возможные причины отказа в предоставлении открытого ключа:

  • /etc/ssh/sshd_config:
    • AllowUsers или AllowGroups указан, но пользователь вашего сервера не указан в списке групп или пользователей (значение по умолчанию не определено, что не накладывает никаких ограничений на вход пользователей или групп в систему).
    • DenyUsers или DenyGroups указан, и вы находитесь в списке пользователей или групп.
    • Вы пытаетесь войти в систему как root, но PermitRootLogin устанавливается на No (по умолчанию yes).
    • PubkeyAuthentication устанавливается на No (по умолчанию yes).
    • AuthorizedKeysFile устанавливается в другое местоположение, и открытые ключи не добавляются в этот файл (по умолчанию .ssh/authorized_keys, относительно домашней директории)
  • ~/.ssh/authorized_keys: ваш открытый ключ не добавлен в этот файл (обратите внимание, что этот файл читается как пользователь root)

Использование нескольких клавиш

Нередко используется несколько ключей. Вместо того, чтобы бежать ssh user@host -i /path/to/identity_file, вы можете использовать конфигурационный файл, ~/.ssh/config.

Общими настройками являются идентификационный файл (ключи) и порт. Следующая конфигурация будет проверять "id_dsa" и "bender" только при подключении к ssh youruser@yourhost:

Host yourhost   IdentityFile ~/.ssh/id_dsa   IdentityFile ~/.ssh/bender

Если вы опустите Host yourhost, настройки будут применяться ко всем подключениям по SSH. Другие параметры также могут быть указаны для этого соответствия хоста, например User youruser, Port 2222 и т.д. Это позволило бы вам подключиться к стенографии ssh yourhost вместо ssh -p2222 youruser@yourhost -i ~/.ssh/id_dsa -i ~/.ssh/bender.