ssh/tailssh: add start of real ssh tests

Updates #3802

Change-Id: I9aea4250062d3a06ca7a5e71a81d31c27a988615
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
This commit is contained in:
Brad Fitzpatrick
2022-02-24 13:31:54 -08:00
committed by Brad Fitzpatrick
parent c9eca9451a
commit 6e4f3614cf
2 changed files with 104 additions and 12 deletions

View File

@ -40,32 +40,39 @@ import (
// Handle handles an SSH connection from c.
func Handle(logf logger.Logf, lb *ipnlocal.LocalBackend, c net.Conn) error {
sshd := &server{lb, logf}
srv := &ssh.Server{
Handler: sshd.handleSSH,
srv := &server{lb, logf}
ss, err := srv.newSSHServer()
if err != nil {
return err
}
ss.HandleConn(c)
return nil
}
func (srv *server) newSSHServer() (*ssh.Server, error) {
ss := &ssh.Server{
Handler: srv.handleSSH,
RequestHandlers: map[string]ssh.RequestHandler{},
SubsystemHandlers: map[string]ssh.SubsystemHandler{},
ChannelHandlers: map[string]ssh.ChannelHandler{},
}
for k, v := range ssh.DefaultRequestHandlers {
srv.RequestHandlers[k] = v
ss.RequestHandlers[k] = v
}
for k, v := range ssh.DefaultChannelHandlers {
srv.ChannelHandlers[k] = v
ss.ChannelHandlers[k] = v
}
for k, v := range ssh.DefaultSubsystemHandlers {
srv.SubsystemHandlers[k] = v
ss.SubsystemHandlers[k] = v
}
keys, err := lb.GetSSH_HostKeys()
keys, err := srv.lb.GetSSH_HostKeys()
if err != nil {
return err
return nil, err
}
for _, signer := range keys {
srv.AddHostKey(signer)
ss.AddHostKey(signer)
}
srv.HandleConn(c)
return nil
return ss, nil
}
type server struct {