trying to get keyboard-interactive challenge to trigger

This commit is contained in:
Kenneth Jenkins 2025-03-26 15:33:39 -07:00
parent 0ae4742dd0
commit 33eda54c8b
3 changed files with 20 additions and 1 deletions

View file

@ -23,11 +23,12 @@ func TestSSH(t *testing.T) {
serverHostKey := newSSHKey(t)
// ssh client setup
var ki scenarios.EmptyKeyboardInteractiveChallenge
clientConfig := &ssh.ClientConfig{
User: "demo",
Auth: []ssh.AuthMethod{
ssh.PublicKeys(clientKey),
//ssh.KeyboardInteractive()
ssh.KeyboardInteractive(ki.Do),
},
HostKeyCallback: ssh.InsecureIgnoreHostKey(),
}
@ -36,6 +37,7 @@ func TestSSH(t *testing.T) {
env := testenv.New(t)
env.Add(scenarios.SSH(scenarios.SSHConfig{}))
env.Add(&ki)
up := upstreams.SSH(
upstreams.WithHostKeys(serverHostKey),

View file

@ -97,3 +97,18 @@ func writeSSHKeyPair(env testenv.Environment, key any) config.SSHKeyPair {
PrivateKeyFile: privname,
}
}
// EmptyKeyboardInteractiveChallenge responds to any keyboard-interactive
// challenges with zero prompts, and fails otherwise.
type EmptyKeyboardInteractiveChallenge struct {
testenv.DefaultAttach
}
func (c *EmptyKeyboardInteractiveChallenge) Do(
name, instruction string, questions []string, echos []bool,
) (answers []string, err error) {
if len(questions) > 0 {
c.Env().Require().FailNow("unsupported keyboard-interactive challenge")
}
return nil, nil
}

View file

@ -69,6 +69,8 @@ func (d *DefaultAttach) RecordCaller() {
d.caller = getCaller(4)
}
func (d *DefaultAttach) Modify(*config.Config) {}
// Aggregate should be embedded in types implementing [Modifier] when the type
// contains other modifiers. Used as an alternative to [DefaultAttach].
// Embedding this struct will properly keep track of when constituent modifiers