proxyAddress string daemonAddress string proxyServer *server.Server sshdServer *server.Server ) BeforeEach(func() { fakeLogSender = fake_logs.NewFakeLogSender() logs.Initialize(fakeLogSender) proxyAuthenticator = &fake_authenticators.FakePasswordAuthenticator{} proxySSHConfig = &ssh.ServerConfig{} proxySSHConfig.PasswordCallback = proxyAuthenticator.Authenticate proxySSHConfig.AddHostKey(TestHostKey) daemonAuthenticator = &fake_authenticators.FakePasswordAuthenticator{} daemonAuthenticator.AuthenticateReturns(&ssh.Permissions{}, nil) daemonSSHConfig = &ssh.ServerConfig{} daemonSSHConfig.PasswordCallback = daemonAuthenticator.Authenticate daemonSSHConfig.AddHostKey(TestHostKey) daemonGlobalRequestHandlers = map[string]handlers.GlobalRequestHandler{} daemonNewChannelHandlers = map[string]handlers.NewChannelHandler{} var err error proxyListener, err = net.Listen("tcp", "127.0.0.1:0") Expect(err).NotTo(HaveOccurred()) proxyAddress = proxyListener.Addr().String()
Context("when an ssh client connects", func() { var ( serverNetConn net.Conn clientNetConn net.Conn clientConn ssh.Conn clientChannels <-chan ssh.NewChannel clientRequests <-chan *ssh.Request clientConnErr error client *ssh.Client ) BeforeEach(func() { serverSSHConfig.PasswordCallback = func(c ssh.ConnMetadata, pass []byte) (*ssh.Permissions, error) { return nil, nil } serverNetConn, clientNetConn = test_helpers.Pipe() clientConfig := &ssh.ClientConfig{ User: "******", Auth: []ssh.AuthMethod{ ssh.Password("secret"), }, } sshd = daemon.New(logger, serverSSHConfig, nil, nil) go sshd.HandleConnection(serverNetConn) clientConn, clientChannels, clientRequests, clientConnErr = ssh.NewClientConn(clientNetConn, "0.0.0.0", clientConfig)