move to zerolog
This commit is contained in:
24
ssh.go
24
ssh.go
@ -4,7 +4,6 @@ import (
|
||||
"encoding/binary"
|
||||
"fmt"
|
||||
"io"
|
||||
"log"
|
||||
"net"
|
||||
"os"
|
||||
"os/exec"
|
||||
@ -13,6 +12,7 @@ import (
|
||||
"unsafe"
|
||||
|
||||
"github.com/kr/pty"
|
||||
"github.com/rs/zerolog/log"
|
||||
"golang.org/x/crypto/ssh"
|
||||
|
||||
config "novit.tech/direktil/pkg/bootstrapconfig"
|
||||
@ -26,20 +26,24 @@ func startSSH(cfg *config.Config) {
|
||||
hostKeyLoaded := false
|
||||
|
||||
for _, format := range []string{"rsa", "dsa", "ecdsa", "ed25519"} {
|
||||
log := log.With().Str("format", format).Logger()
|
||||
|
||||
pkBytes, err := os.ReadFile("/id_" + format)
|
||||
if err != nil {
|
||||
log.Printf("ssh : failed to load %s host key: %v", format, err)
|
||||
log.Error().Err(err).Msg("ssh: failed to load host key")
|
||||
continue
|
||||
}
|
||||
|
||||
pk, err := ssh.ParsePrivateKey(pkBytes)
|
||||
if err != nil {
|
||||
log.Printf("ssh: failed to parse %s host key: %v", format, err)
|
||||
log.Error().Err(err).Msg("ssh: failed to parse host key")
|
||||
continue
|
||||
}
|
||||
|
||||
sshConfig.AddHostKey(pk)
|
||||
hostKeyLoaded = true
|
||||
|
||||
log.Info().Msg("ssh: loaded host key")
|
||||
}
|
||||
|
||||
if !hostKeyLoaded {
|
||||
@ -52,13 +56,13 @@ func startSSH(cfg *config.Config) {
|
||||
fatalf("ssh: failed to listen on %s: %v", sshBind, err)
|
||||
}
|
||||
|
||||
log.Print("SSH server listening on ", sshBind)
|
||||
log.Info().Str("bind-address", sshBind).Msg("SSH server listening")
|
||||
|
||||
go func() {
|
||||
for {
|
||||
conn, err := listener.Accept()
|
||||
if err != nil {
|
||||
log.Print("ssh: accept conn failed: ", err)
|
||||
log.Info().Err(err).Msg("ssh: accept conn failed")
|
||||
continue
|
||||
}
|
||||
|
||||
@ -71,12 +75,12 @@ func sshHandleConn(conn net.Conn, sshConfig *ssh.ServerConfig) {
|
||||
sshConn, chans, reqs, err := ssh.NewServerConn(conn, sshConfig)
|
||||
|
||||
if err != nil {
|
||||
log.Print("ssh: handshake failed: ", err)
|
||||
log.Error().Err(err).Msg("ssh: handshake failed")
|
||||
return
|
||||
}
|
||||
|
||||
remoteAddr := sshConn.User() + "@" + sshConn.RemoteAddr().String()
|
||||
log.Print("ssh: new connection from ", remoteAddr)
|
||||
log.Info().Str("remote", remoteAddr).Msg("ssh: new connection")
|
||||
|
||||
go sshHandleReqs(reqs)
|
||||
go sshHandleChannels(remoteAddr, chans)
|
||||
@ -89,7 +93,7 @@ func sshHandleReqs(reqs <-chan *ssh.Request) {
|
||||
req.Reply(true, nil)
|
||||
|
||||
default:
|
||||
log.Printf("ssh: discarding req: %+v", req)
|
||||
log.Info().Str("type", req.Type).Msg("ssh: discarding request")
|
||||
req.Reply(false, nil)
|
||||
}
|
||||
}
|
||||
@ -104,7 +108,7 @@ func sshHandleChannels(remoteAddr string, chans <-chan ssh.NewChannel) {
|
||||
|
||||
channel, requests, err := newChannel.Accept()
|
||||
if err != nil {
|
||||
log.Print("ssh: failed to accept channel: ", err)
|
||||
log.Error().Err(err).Msg("ssh: failed to accept channel")
|
||||
continue
|
||||
}
|
||||
|
||||
@ -211,7 +215,7 @@ func sshHandleChannel(remoteAddr string, channel ssh.Channel, requests <-chan *s
|
||||
var err error
|
||||
ptyF, ttyF, err = pty.Open()
|
||||
if err != nil {
|
||||
log.Print("PTY err: ", err)
|
||||
log.Error().Err(err).Msg("ssh: PTY open failed")
|
||||
req.Reply(false, nil)
|
||||
continue
|
||||
}
|
||||
|
Reference in New Issue
Block a user