Как сообщить SFTP, какой открытый ключ использовать?

SFTP имеет опцию "-i", чтобы установить закрытый ключ для аутентификации с открытым ключом. Тем не менее, похоже, не существует варианта, для которого должен использоваться соответствующий открытый ключ. Конечно, это должно понадобиться, чтобы сообщить серверу, какой открытый ключ использовать для вызова.

Почему это и как это работает?

2 ответа

Сначала файл для "закрытого" ключа содержит все части вашего ключа. И общественные и частные части. Если вы удалите локальную копию вашего открытого ключа, вы можете просто воссоздать ее из файла, который содержит закрытый ключ. Вы можете увидеть все для ключа RSA с openssl rsa -in filename.id_rsa -text, Таким образом, вам никогда не нужно идентифицировать "открытую" часть пары ключей, когда у вас есть закрытый ключ. Закрытый ключ имеет всю информацию.

Что касается сервера, аутентифицирующего клиента. Сервер не шифрует что-либо с помощью открытых ключей. Это происходит по-другому. Клиент отправляет некоторую информацию с подписью, подписанной секретным ключом. Сервер может проверить это, используя открытые ключи, о которых он знает.

https://tools.ietf.org/html/rfc4252

   To perform actual authentication, the client MAY then send a
   signature generated using the private key.  The client MAY send the
   signature directly without first verifying whether the key is
   acceptable.  The signature is sent using the following packet:

      byte      SSH_MSG_USERAUTH_REQUEST
      string    user name
      string    service name
      string    "publickey"
      boolean   TRUE
      string    public key algorithm name
      string    public key to be used for authentication
      string    signature

   The value of 'signature' is a signature by the corresponding private
   key over the following data, in the following order:

      string    session identifier
      byte      SSH_MSG_USERAUTH_REQUEST
      string    user name
      string    service name
      string    "publickey"
      boolean   TRUE
      string    public key algorithm name
      string    public key to be used for authentication

Открытый ключ, который нужно использовать, задается в файле author_keys для учетной записи пользователя на сервере, к которому вы подключаетесь. Это не установлено в клиенте.

https://www.digitalocean.com/community/tutorials/understanding-the-ssh-encryption-and-connection-process

хорошо читать, как это работает.

Другие вопросы по тегам