@gogolang

Страница 769 из 1630
Alexey
23.01.2018
14:32:59
при этом выполняет очень значительную роль

Есть еще вопрос

При авторизации в первый раз по ssh, к неизвестному еще хосту выходит такое



Google
Alexey
23.01.2018
14:42:10
Это как то можно в го считать и типа согласиться добавить в список ключей?

Ivanov
23.01.2018
14:43:26
по expect можно)

Alexey
23.01.2018
14:44:27
по expect можно)
Что это? Или ты имел ввиду except? В питоне?) В питоне то я уже давно такое реализовал без проблем

John
23.01.2018
14:44:30
Это как то можно в го считать и типа согласиться добавить в список ключей?
Для go есть пакет ssh, и у него, ЕМНИП, есть callback для этого

Alexey
23.01.2018
14:45:15
Для go есть пакет ssh, и у него, ЕМНИП, есть callback для этого
Я пробовал, но как понял в том пакете нужно чтобы ключи уже были в файое ida_rsa

Ivanov
23.01.2018
14:45:21
нет. https://habrahabr.ru/company/ruvds/blog/328436/ вот это имел ввиду

https://github.com/google/goexpect

а вот фича которая переносит это в го

Alexey
23.01.2018
14:46:36
Блин, а чистый го не? stdin, stdout?

это вообще возможно как то?

Я просто что только уже не пробовал

Ivanov
23.01.2018
14:47:05
ну если гугл написал для этого либу, то я не думаю что в го есть по дефолту

John
23.01.2018
14:47:12
Я пробовал, но как понял в том пакете нужно чтобы ключи уже были в файое 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, и тебе туда придет имя хоста, и его ключ. Ну и дальше делай что хочешь )

Google
Alexander
23.01.2018
14:48:14
С коммандной строки вроде работает ssh -i /dev/null

Alexey
23.01.2018
14:48:19
Эм, а разве коллбеку не нужно явно передавать?

John
23.01.2018
14:48:39
Alexey
23.01.2018
14:49:35
Ну так если ключ явно передавать, то его знать нужно заранее, а я то хз что ща попадется

Я об этом

Или я не до конца понял работу callback?

John
23.01.2018
14:50:32
Ну так если ключ явно передавать, то его знать нужно заранее, а я то хз что ща попадется
Я все равно не понял что ты хочешь сделать/сказать. В callback придет публичный ключ от сервера, к которму ты подключен. Ты его САМ проверяешь на доверие. В чем проблема ?

локальные ключи, естественно, читай сам :)

Alexey
23.01.2018
14:51:41
смотри



Вот этот ключ мне нужно принять и продолжить работу

John
23.01.2018
14:52:01
Вот, это ключ удаленного сервера

Alexey
23.01.2018
14:52:09
Да я понял

То что ты мне написал в коллбек

John
23.01.2018
14:52:46
если хочешь так же в go сделать, выведи ключ который тебе пришел на экран, и прочитай ввод от пользователя, что мол Yes/no

и если no - верни какой-то error

Ivanov
23.01.2018
14:53:46
Если я правильно понял ему нужно этот "yes" иметировать

Alexey
23.01.2018
14:53:53
10.1

Google
Ivanov
23.01.2018
14:54:15
так я выше написал как этто сделать

John
23.01.2018
14:55:00
так я выше написал как этто сделать
это жуткий костыль с вывозом других бинарников

Alexey
23.01.2018
14:55:03
так я выше написал как этто сделать
Ну вот мне хотелось бы знать, что если по другому никак, тобуду костылить

John
23.01.2018
14:55:03
а тут все нативно :)

Alexey
23.01.2018
14:55:29
очень странно
Это не странно, это нормально везде так, сервис отправляет свой баннер

Вот я и не могу найти решение) Даже в x/ssh пакете не решен этот вопрос

Вот и хочу сам сделать как то

John
23.01.2018
14:57:25
John
23.01.2018
14:58:41
Alexey
23.01.2018
14:59:19
Да не

Код

Вот проверь тут например

John
23.01.2018
15:00:04
кусок модуля

выдирать - лень

Alexey
23.01.2018
15:00:29
64.119.128.157

Google
Alexey
23.01.2018
15:03:40
Че то странно

John
23.01.2018
15:03:51
64.119.128.157
и чего ? тоже норм, ключ приходит

Alexey
23.01.2018
15:04:08
Ок, попробую тогда

Просто я думал callback принимает параметры, в том числе и ключ, но никак не читает его

John
23.01.2018
15:06:08
Stanislav
23.01.2018
15:06:43
в смысле, как можно принять ключ, но НЕ читать его ?)
Изи, просто принимаешь ВСЕ не проверяя

Alexey
23.01.2018
15:07:11
Да не, ты не понял, допустим я из файла уже сохраненный передал и он его дальше, а не читать от стороннего ресурса

Стоп

То что ты дал

Admin
ERROR: S client not available

John
23.01.2018
15:08:40
Да не, ты не понял, допустим я из файла уже сохраненный передал и он его дальше, а не читать от стороннего ресурса
Я запутался, честно :) У тебя есть несколько ключей: — твой приватный — публичный от сервера при коннекте, ты САМ должен прочитать приватный ключ и скормить его ssh клиенту

Alexey
23.01.2018
15:09:10
Это не приватный, а наоборот паблик хост кей

Короч ладно

Смотри

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

тут вот метод аутентификации у меня по паролю

John
23.01.2018
15:10:17
тут вот метод аутентификации у меня по паролю
значит, добавь свой пароль в auth methods

Alexey
23.01.2018
15:10:26
А user

не

либа гугл не подходит нифига

Google
Alexey
23.01.2018
15:10:43
Я уже что только не делал

Не то

John
23.01.2018
15:10:57
Хз, у меня все работает как нужно :)

А user
а юзер идет отдельно

Alexey
23.01.2018
15:11:27
Ну как отдельно? Просто юзернейм же

John
23.01.2018
15:11:34
получается, у тебя есть сам user, и есть методы, с помощью которых он проходит авторизацию

например, пароль, ключ, и тд ...

Alexey
23.01.2018
15:11:54
Ну это ясно

но у меня публичный ключ + пароль

Вот я об этом

John
23.01.2018
15:12:48
ну, добавь их в методы при коннекте - https://godoc.org/golang.org/x/crypto/ssh#AuthMethod

Alexey
23.01.2018
15:12:49
Мне нужно, чтобы мой клиент считал публичный ключ, сохранил его

Alexey
23.01.2018
15:14:38
Ну когда первое подключение, он его один раз передает как идентификатор, после уже хранится в файле и не нужен

John
23.01.2018
15:16:31
Ну когда первое подключение, он его один раз передает как идентификатор, после уже хранится в файле и не нужен
Я правда пытаюсь понять, но у меня не получается :)) При авторизации по ключу, твой клиент каждый раз передает на сервер свой идентификатор, другого быть не может :)

точно так же и от сервера, ты всегда получаешь его ключ, но на второй раз ты можешь его просто проверить, НЕ сохраняя

Alexey
23.01.2018
15:17:34
да

John
23.01.2018
15:19:50
а что бы его проверить ... тебе нужно заранее прочитать тот файл, куда ты сохранил ключ с первого раза :))

ну или читать там же, но сам факт, делать это самому

Вроде так

Alexey
23.01.2018
15:21:24
ну да, сверяю, если есть то подключаемся, если нет, то добавляем

Alexander
23.01.2018
15:21:40
Если ты первый раз его сохраняешь и используешь просто без вопросов, то зачем его вообще сохранять? Второй раз так же бери ключ, который дали и используй его. Или таки проверка нужна? Тогда первый раз подтверждение надо спрашивать, так же как ssh делает

Страница 769 из 1630