Anonymous
4 строки
Anonymous
при этом выполняет очень значительную роль
Anonymous
Есть еще вопрос
Anonymous
При авторизации в первый раз по ssh, к неизвестному еще хосту выходит такое
Anonymous
Anonymous
Это как то можно в го считать и типа согласиться добавить в список ключей?
vld
по expect можно)
Anonymous
по expect можно)
Что это? Или ты имел ввиду except? В питоне?) В питоне то я уже давно такое реализовал без проблем
Anonymous
Это как то можно в го считать и типа согласиться добавить в список ключей?
Для go есть пакет ssh, и у него, ЕМНИП, есть callback для этого
Anonymous
Для go есть пакет ssh, и у него, ЕМНИП, есть callback для этого
Я пробовал, но как понял в том пакете нужно чтобы ключи уже были в файое ida_rsa
vld
нет. https://habrahabr.ru/company/ruvds/blog/328436/ вот это имел ввиду
vld
https://github.com/google/goexpect
vld
а вот фича которая переносит это в го
Anonymous
Блин, а чистый го не? stdin, stdout?
Anonymous
это вообще возможно как то?
Anonymous
Я просто что только уже не пробовал
vld
ну если гугл написал для этого либу, то я не думаю что в го есть по дефолту
Anonymous
Я пробовал, но как понял в том пакете нужно чтобы ключи уже были в файое ida_rsa
мм... не понял. Если в go используешь пакет ssh, то при коннекте ты создаешь конфиг, типа такого: conf := &ssh.ClientConfig{ User: auth.GetUsername(), Auth: methods, HostKeyCallback: func(hostname string, remote net.Addr, key ssh.PublicKey) error { return nil }, Timeout: dialerSSHTimeout, } HostKeyCallback, и тебе туда придет имя хоста, и его ключ. Ну и дальше делай что хочешь )
Alexander
С коммандной строки вроде работает ssh -i /dev/null
Anonymous
Эм, а разве коллбеку не нужно явно передавать?
Anonymous
Anonymous
Ну так если ключ явно передавать, то его знать нужно заранее, а я то хз что ща попадется
Anonymous
Я об этом
Anonymous
Или я не до конца понял работу callback?
Anonymous
Ну так если ключ явно передавать, то его знать нужно заранее, а я то хз что ща попадется
Я все равно не понял что ты хочешь сделать/сказать. В callback придет публичный ключ от сервера, к которму ты подключен. Ты его САМ проверяешь на доверие. В чем проблема ?
Anonymous
локальные ключи, естественно, читай сам :)
Anonymous
смотри
Anonymous
Anonymous
Вот этот ключ мне нужно принять и продолжить работу
Anonymous
Вот, это ключ удаленного сервера
Anonymous
Да я понял
Anonymous
То что ты мне написал в коллбек
Anonymous
если хочешь так же в go сделать, выведи ключ который тебе пришел на экран, и прочитай ввод от пользователя, что мол Yes/no
Anonymous
и если no - верни какой-то error
Anonymous
Типа Openssh7.4-Ubuntu
vld
Если я правильно понял ему нужно этот "yes" иметировать
Anonymous
10.1
vld
так я выше написал как этто сделать
Anonymous
так я выше написал как этто сделать
это жуткий костыль с вывозом других бинарников
Anonymous
так я выше написал как этто сделать
Ну вот мне хотелось бы знать, что если по другому никак, тобуду костылить
Anonymous
а тут все нативно :)
Anonymous
Anonymous
очень странно
Это не странно, это нормально везде так, сервис отправляет свой баннер
Anonymous
Вот я и не могу найти решение) Даже в x/ssh пакете не решен этот вопрос
Anonymous
Вот и хочу сам сделать как то
Anonymous
Anonymous
Да не
Anonymous
Код
Anonymous
Вот проверь тут например
Anonymous
кусок модуля
Anonymous
выдирать - лень
Anonymous
64.119.128.157
Anonymous
Че то странно
Anonymous
64.119.128.157
и чего ? тоже норм, ключ приходит
Anonymous
Ок, попробую тогда
Anonymous
Просто я думал callback принимает параметры, в том числе и ключ, но никак не читает его
Stanislav
в смысле, как можно принять ключ, но НЕ читать его ?)
Изи, просто принимаешь ВСЕ не проверяя
Anonymous
Да не, ты не понял, допустим я из файла уже сохраненный передал и он его дальше, а не читать от стороннего ресурса
Anonymous
Стоп
Anonymous
То что ты дал
Anonymous
Да не, ты не понял, допустим я из файла уже сохраненный передал и он его дальше, а не читать от стороннего ресурса
Я запутался, честно :) У тебя есть несколько ключей: — твой приватный — публичный от сервера при коннекте, ты САМ должен прочитать приватный ключ и скормить его ssh клиенту
Anonymous
Это не приватный, а наоборот паблик хост кей
Anonymous
Короч ладно
Anonymous
Смотри
Anonymous
conf := &ssh.ClientConfig{ User: auth.GetUsername(), Auth: methods, HostKeyCallback: func(hostname string, remote net.Addr, key ssh.PublicKey) error { log.Debug(d, "HostKeyCallback: %s %s [%s]", hostname, remote, key) return nil }, Timeout: dialerSSHTimeout, } return conf, nil return c, nil
Anonymous
тут вот метод аутентификации у меня по паролю
Anonymous
тут вот метод аутентификации у меня по паролю
значит, добавь свой пароль в auth methods
Anonymous
А user
Anonymous
не
Anonymous
либа гугл не подходит нифига
Anonymous
Я уже что только не делал
Anonymous
Не то
Anonymous
Хз, у меня все работает как нужно :)