Не удалось загрузить закрытый ключ, когда я запускаю & ldquo; список клиентов ножа & rdquo;

Похоже, что для вашего запроса требуется строка с префиксом длины, состоящая из однобайтных символов, поэтому в C # потребуется немного больше работы, которая использует символы Unicode. Я собираюсь предположить, что вы хотите, чтобы ваша строка XML была закодирована с помощью UTF-8. Мы также не сможем использовать строку, чтобы удерживать запрос, когда он был скомпоновано, вместо этого мы будем использовать массив байтов.

using System;
using System.IO;
using System.Text;

class Program
{
    static void
    Main(string[] args)
    {
        string xml = "<xml><request>...[snipped for brevity]...</request></xml>";
        using ( MemoryStream stream = new MemoryStream() )
        {
            using ( BinaryWriter writer = new BinaryWriter(stream) )
            {
                byte [] encodedXml = Encoding.UTF8.GetBytes(xml);
                writer.Write(ToBigEndian(encodedXml.Length + 4));
                writer.Write(encodedXml);
            }

            byte [] request = stream.ToArray();

            //  now use request however you like
        }
    }

    static byte []
    ToBigEndian(int value)
    {
        byte [] retval = BitConverter.GetBytes(value);
        if ( BitConverter.IsLittleEndian )
        {
            Array.Reverse(retval);
        }
        return retval;
    }
}

. Другое замечание заключается в том, что php pack () с параметром «N» заставляет big-endian на ваших ведущих 4 байтах. Поэтому я написал метод ToBigEndian () для обработки преобразования в big-endian на любой платформе.

17
задан ROMANIA_engineer 9 August 2016 в 14:36
поделиться

3 ответа

Пожалуйста, проверьте один раз, что файл knife.rb находится в .chef / knife.rb.

Если не выполнить следующую команду:

knife configure initial

, чтобы она создала knife.rb, то проверьте путь к клиентскому ключу в knife.rb и перепроверьте, является ли client.pem присутствовать на этом месте.

Если это не сработает.

просто перейдите на клиентский узел и удалите client.pem из / etc / chef, затем запустите chef-client, чтобы он снова создал client.pem. Теперь скопируйте этот client.pem на сервер и добавьте это местоположение в knife.rb

Он будет определенно работать:)

29
ответ дан Alan 9 August 2016 в 14:36
поделиться

В моем случае помогла команда запуска ножа из папки .chef

0
ответ дан divideByZero 9 August 2016 в 14:36
поделиться

В дополнение к ответу Джиоти и Алана, вы также можете попытаться создать пользователя из веб-сайта шеф-повара в своем браузере.

Прочтите местонахождение client.pem из knife.rb. Теперь перейдите в браузер и создайте нового пользователя с правами администратора и скопируйте закрытый ключ. Помните, что закрытый ключ больше не будет отображаться, поэтому будьте начеку.

Создайте файл в этом месте и скопируйте содержимое.

Работал для меня, надеюсь, это работает для вас.

Желаем удачи :)

1
ответ дан wallydrag 9 August 2016 в 14:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: