Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Оплата
Новости
Доставка
Загрузки
Форум
Настройка
    info@proxmox.su
    +7 (495) 320-70-49
    Заказать звонок
    Аспро: ЛайтШоп
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Аспро: ЛайтШоп
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Аспро: ЛайтШоп
    Телефоны
    +7 (495) 320-70-49
    Заказать звонок
    0
    0
    0
    Аспро: ЛайтШоп
    • +7 (495) 320-70-49
      • Назад
      • Телефоны
      • +7 (495) 320-70-49
      • Заказать звонок
    • info@proxmox.su
    • Москва, Бакунинская улица, 69с1
    • Пн-Пт: 09-00 до 18-00
      Сб-Вс: выходной
    • 0 Сравнение
    • 0 Избранное
    • 0 Корзина
    Главная
    Форум
    Proxmox Виртуальная Среда
    Не могу перевести текст: At a loss added ssh key via API maybe some bug ?

    Форумы: Proxmox Виртуальная Среда, Proxmox Backup Server, Proxmox Mail Gateway, Proxmox Datacenter Manager
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Не могу перевести текст: At a loss added ssh key via API maybe some bug ?, Proxmox Виртуальная Среда
     
    Craig St George
    Guest
    #1
    0
    11.10.2018 05:13:00
    У меня много вещей, которые работают через API: создание конфигурации клона и другие — все работает хорошо. Затем я попытался добавить SSH-ключ через API для машины QUEM и получил ошибку с некорректной закодированной строкой. Я попробовал через pvesh set /nodes/promox1/qemu/317/config -sshkeys ....... и заметил, что, пока я использую кодировку RFC 3986, все работает нормально, например, знаки %. Я скопировал точно закодированный ключ, который подошел в командной строке, и отправил его через API, но снова получила ошибку. Копнув глубже, я нашел JSONSchema.pm и изменил сообщение там для теста. Через API я все равно получаю ошибку с некорректной закодированной строкой, а через командную строку я получаю измененное сообщение. Перезапустил pveproxy, но все равно вижу оригинальное сообщение — странно, так что я не уверен, есть ли другой тест для этого при использовании API или мне нужно перезапустить какую-то другую службу. У меня только один узел, так как это моя DEV-система, так что я точно подключаюсь к правильному. Сейчас у меня есть две мысли: 1) есть ли другой тест для закодированной строки при использовании API? 2) Возможно, объем данных слишком большой, и HTTP-сервер как-то обрезает его, отсюда и ошибка. Есть какие-нибудь идеи? Спасибо!
     
     
     
    Dragoshi
    Guest
    #2
    0
    25.04.2019 16:33:00
    Привет, у меня такая же проблема, но я новичок в Python. Можешь помочь? Вот что я имею на данный момент: Код: import urllib

    cluster = "<cluster_name>"
    node = "prox3"
    vmID = 104
    sshKey = "ssh-rsa AAAAB3<много-много букв> user@domain.com"

    auth = wrdConnProxmox(cluster)

    data = {}
    data["sshkeys"] = sshKey
    data = urllib.parse.urlencode(data)
    print(data)
    result = auth.wPost("nodes/" + str(node) + "/qemu/" + str(vmID) + "/config", data)
    print(result) И результат: Код: sshkeys=ssh-rsa+AAAAB3NzaC1yc2EAAAADAQABAAACAQDP3MmOrvy0mz7SBpxfTvQoO%2F­ocy35dz32%2BIbGPaAHp6NGaZYXUTjVXV8Z1N1gmfN3qFupYBs%2Fn3NNXvB­Z4sadrfcfwSTPVGb1jR60CKv7nb5klDh8M%2B40O6TJXI4%2B791feCwU0Od­USPoNMZg1pU4zHfZ9m2nbDj9qzHslZ46KcoYczfOhYfkA15b2WRpZQVtFWb%­2F5CmFwWOLw7o54f17mJqiXTEVVWvFwOOkuUGm9Lp3Cg9ovJd8LRVXfVJ4pC­bm6AdX9gb7nI8FU2SdSOrPcj84m3%2FL01ViYHDvoJbfW5qNx7tstjWXafQM­fmgC3o6zDSN8LJGJWr9X%2F%2BOj3yYKiWRfA6EgnMWBJhPE98B12x8DpRCI­f%2BBXQ04%2FWgn3odO4XFPGRyqYnUM8EGn9S2FL%2Bquk%2BkXhrFlD335M­PXWTRP1l9ndHsFn9XjJRJk%2BbnebK%2FCiqaznUxM401y%2FoFzngYIKCDE­1LagscbIOoxSSfEoRPziagWlosd3cYLgYhB1pretuN%2F45o%2B%2FNhOhhJ­tySSaxfinF%2BKHD2BvCLXOuA3BmZq%2FBJ8rzFVdVHxw%2FRquQBwDOg0dh­2fc3Ysl1Waao1D9EVoDjgajNi4iMOlUi%2Bz1pf97y%2Ffx7wrfv1lCl4zvo­CHwB1BRcTRSBpXAdC8pDITTTfYVCBOnCE%2Bn7CiN%2FqvhoWcQ%3D%3D+us­er%40domain.com

    {'data': None, 'errors': {'sshkeys': 'неверный формат - недопустимая строка в кодировке URL: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDP3MmOrvy0mz7SBpxfTvQoO/ocy35d­z32+IbGPaAHp6NGaZYXUTjVXV8Z1N1gmfN3qFupYBs/n3NNXvBZ4sadrfcfw­STPVGb1jR60CKv7nb5klDh8M+40O6TJXI4+791feCwU0OdUSPoNMZg1pU4zH­fZ9m2nbDj9qzHslZ46KcoYczfOhYfkA15b2WRpZQVtFWb/5CmFwWOLw7o54f­17mJqiXTEVVWvFwOOkuUGm9Lp3Cg9ovJd8LRVXfVJ4pCbm6AdX9gb7nI8FU2­SdSOrPcj84m3/L01ViYHDvoJbfW5qNx7tstjWXafQMfmgC3o6zDSN8LJGJWr­9X/+Oj3yYKiWRfA6EgnMWBJhPE98B12x8DpRCIf+BXQ04/Wgn3odO4XFPGRy­qYnUM8EGn9S2FL+quk+kXhrFlD335MPXWTRP1l9ndHsFn9XjJRJk+bnebK/C­iqaznUxM401y/oFzngYIKCDE1LagscbIOoxSSfEoRPziagWlosd3cYLgYhB1­pretuN/45o+/NhOhhJtySSaxfinF+KHD2BvCLXOuA3BmZq/BJ8rzFVdVHxw/­RquQBwDOg0dh2fc3Ysl1Waao1D9EVoDjgajNi4iMOlUi+z1pf97y/fx7wrfv­1lCl4zvoCHwB1BRcTRSBpXAdC8pDITTTfYVCBOnCE+n7CiN/qvhoWcQ== user@domain.com\n'}} Я не понимаю, о чем вы говорите по поводу двойной кодировки.
     
     
     
    Dragoshi
    Guest
    #3
    0
    25.04.2019 16:34:00
    Не мог бы ты взглянуть на мой пост ниже? Буду очень признателен за помощь.
     
     
     
    Craig St George
    Guest
    #4
    0
    26.04.2019 09:03:00
    вам нужно закодировать ключ, я предполагаю, в Python data["sshkeys"] = urllib.parse.urlencode(sshKey), затем вы кодируете данные, когда отправляете их в API, поэтому ключ закодирован дважды
     
     
     
    Dragoshi
    Guest
    #5
    0
    26.04.2019 10:15:00
    Если я это сделаю, возникает ошибка TypeError: Код: raise TypeError TypeError: невалидная последовательность или объект отображения, не являющийся строкой. Вот почему я кодировал всю переменную "data".
     
     
     
    Craig St George
    Guest
    #6
    0
    26.04.2019 15:15:00
    Убери вторую часть, которая кодирует $data, так как я предполагаю, что то, что ты отправляешь в API, возможно, тоже закодировано. Попробуй только ту, что кодирует ключ, и подтверди. Везде используй curl для тестирования, а затем сделай так, чтобы твой код делал то же самое, что и curl.
     
     
     
    Dragoshi
    Guest
    #7
    0
    02.05.2019 16:34:00
    Оставлю это здесь, так как у всех может быть такая же проблема. Вот трюк: Код: from urllib.parse import quote

    sshKey = "ssh-rsa <blah blah blah key> user@domain.com"
    sshKey = quote(sshKey, safe='')
    data = {}
    data["sshkeys"] = sshKey

    auth.wPost("nodes/"+str(node)+"/qemu/"+str(vmID)+"/config",data) Магия происходит в аргументе Код: safe=''
     
     
     
    LexyJexon
    Guest
    #8
    0
    21.04.2023 14:19:00
    У меня такая же проблема, но я работаю с API Proxmox, используя пакет proxmox-api-go. Помогите, пожалуйста, закодировать ssh-ключ в urlencode на golang.
     
     
     
    Страницы: 1
    Читают тему
    +7 (495) 320-70-49
    info@proxmox.su

    Конфиденциальность Оферта
    © 2026 Proxmox.su
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры