test that upstream banner is sent to client

This commit is contained in:
Kenneth Jenkins 2025-04-11 13:46:47 -07:00
parent 95d0baf137
commit fe2df405e0

View file

@ -28,6 +28,7 @@ func TestSSH(t *testing.T) {
// ssh client setup // ssh client setup
var ki scenarios.EmptyKeyboardInteractiveChallenge var ki scenarios.EmptyKeyboardInteractiveChallenge
var bannerReceived string
clientConfig := &ssh.ClientConfig{ clientConfig := &ssh.ClientConfig{
User: "demo@example", User: "demo@example",
Auth: []ssh.AuthMethod{ Auth: []ssh.AuthMethod{
@ -35,6 +36,7 @@ func TestSSH(t *testing.T) {
ssh.KeyboardInteractive(ki.Do), ssh.KeyboardInteractive(ki.Do),
}, },
HostKeyCallback: ssh.FixedHostKey(newPublicKey(t, serverHostKey.Public())), HostKeyCallback: ssh.FixedHostKey(newPublicKey(t, serverHostKey.Public())),
BannerCallback: func(message string) error { bannerReceived = message; return nil },
} }
// pomerium + upstream setup // pomerium + upstream setup
@ -56,6 +58,9 @@ func TestSSH(t *testing.T) {
up := upstreams.SSH( up := upstreams.SSH(
upstreams.WithHostKeys(newSignerFromKey(t, serverHostKey)), upstreams.WithHostKeys(newSignerFromKey(t, serverHostKey)),
upstreams.WithPublicKeyCallback(certChecker.Authenticate), upstreams.WithPublicKeyCallback(certChecker.Authenticate),
upstreams.WithBannerCallback(func(_ ssh.ConnMetadata) string {
return "UPSTREAM BANNER"
}),
) )
up.SetServerConnCallback(echoShell{t}.handleConnection) up.SetServerConnCallback(echoShell{t}.handleConnection)
r := up.Route(). r := up.Route().
@ -70,6 +75,8 @@ func TestSSH(t *testing.T) {
require.NoError(t, err) require.NoError(t, err)
defer client.Close() defer client.Close()
assert.Equal(t, "UPSTREAM BANNER", bannerReceived)
sess, err := client.NewSession() sess, err := client.NewSession()
require.NoError(t, err) require.NoError(t, err)
defer sess.Close() defer sess.Close()