ssh: replace tempfork with tailscale/gliderssh
Brings in a newer version of Gliderlabs SSH with added socket forwarding support. Fixes #12409 Fixes #5295 Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com>
This commit is contained in:
committed by
Kristoffer Dalby
parent
82fa218c4a
commit
dd3b613787
+61
-61
@@ -35,13 +35,13 @@ import (
|
||||
|
||||
"github.com/creack/pty"
|
||||
"github.com/pkg/sftp"
|
||||
gliderssh "github.com/tailscale/gliderssh"
|
||||
"github.com/u-root/u-root/pkg/termios"
|
||||
gossh "golang.org/x/crypto/ssh"
|
||||
"golang.org/x/crypto/ssh"
|
||||
"golang.org/x/sys/unix"
|
||||
"tailscale.com/cmd/tailscaled/childproc"
|
||||
"tailscale.com/hostinfo"
|
||||
"tailscale.com/tailcfg"
|
||||
"tailscale.com/tempfork/gliderlabs/ssh"
|
||||
"tailscale.com/types/logger"
|
||||
"tailscale.com/version/distro"
|
||||
)
|
||||
@@ -897,7 +897,7 @@ func (ss *sshSession) launchProcess() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func resizeWindow(fd int, winCh <-chan ssh.Window) {
|
||||
func resizeWindow(fd int, winCh <-chan gliderssh.Window) {
|
||||
for win := range winCh {
|
||||
unix.IoctlSetWinsize(fd, syscall.TIOCSWINSZ, &unix.Winsize{
|
||||
Row: uint16(win.Height),
|
||||
@@ -912,62 +912,62 @@ func resizeWindow(fd int, winCh <-chan ssh.Window) {
|
||||
// to mnemonic names expected by the termios package.
|
||||
// These are meant to be platform independent.
|
||||
var opcodeShortName = map[uint8]string{
|
||||
gossh.VINTR: "intr",
|
||||
gossh.VQUIT: "quit",
|
||||
gossh.VERASE: "erase",
|
||||
gossh.VKILL: "kill",
|
||||
gossh.VEOF: "eof",
|
||||
gossh.VEOL: "eol",
|
||||
gossh.VEOL2: "eol2",
|
||||
gossh.VSTART: "start",
|
||||
gossh.VSTOP: "stop",
|
||||
gossh.VSUSP: "susp",
|
||||
gossh.VDSUSP: "dsusp",
|
||||
gossh.VREPRINT: "rprnt",
|
||||
gossh.VWERASE: "werase",
|
||||
gossh.VLNEXT: "lnext",
|
||||
gossh.VFLUSH: "flush",
|
||||
gossh.VSWTCH: "swtch",
|
||||
gossh.VSTATUS: "status",
|
||||
gossh.VDISCARD: "discard",
|
||||
gossh.IGNPAR: "ignpar",
|
||||
gossh.PARMRK: "parmrk",
|
||||
gossh.INPCK: "inpck",
|
||||
gossh.ISTRIP: "istrip",
|
||||
gossh.INLCR: "inlcr",
|
||||
gossh.IGNCR: "igncr",
|
||||
gossh.ICRNL: "icrnl",
|
||||
gossh.IUCLC: "iuclc",
|
||||
gossh.IXON: "ixon",
|
||||
gossh.IXANY: "ixany",
|
||||
gossh.IXOFF: "ixoff",
|
||||
gossh.IMAXBEL: "imaxbel",
|
||||
gossh.IUTF8: "iutf8",
|
||||
gossh.ISIG: "isig",
|
||||
gossh.ICANON: "icanon",
|
||||
gossh.XCASE: "xcase",
|
||||
gossh.ECHO: "echo",
|
||||
gossh.ECHOE: "echoe",
|
||||
gossh.ECHOK: "echok",
|
||||
gossh.ECHONL: "echonl",
|
||||
gossh.NOFLSH: "noflsh",
|
||||
gossh.TOSTOP: "tostop",
|
||||
gossh.IEXTEN: "iexten",
|
||||
gossh.ECHOCTL: "echoctl",
|
||||
gossh.ECHOKE: "echoke",
|
||||
gossh.PENDIN: "pendin",
|
||||
gossh.OPOST: "opost",
|
||||
gossh.OLCUC: "olcuc",
|
||||
gossh.ONLCR: "onlcr",
|
||||
gossh.OCRNL: "ocrnl",
|
||||
gossh.ONOCR: "onocr",
|
||||
gossh.ONLRET: "onlret",
|
||||
gossh.CS7: "cs7",
|
||||
gossh.CS8: "cs8",
|
||||
gossh.PARENB: "parenb",
|
||||
gossh.PARODD: "parodd",
|
||||
gossh.TTY_OP_ISPEED: "tty_op_ispeed",
|
||||
gossh.TTY_OP_OSPEED: "tty_op_ospeed",
|
||||
ssh.VINTR: "intr",
|
||||
ssh.VQUIT: "quit",
|
||||
ssh.VERASE: "erase",
|
||||
ssh.VKILL: "kill",
|
||||
ssh.VEOF: "eof",
|
||||
ssh.VEOL: "eol",
|
||||
ssh.VEOL2: "eol2",
|
||||
ssh.VSTART: "start",
|
||||
ssh.VSTOP: "stop",
|
||||
ssh.VSUSP: "susp",
|
||||
ssh.VDSUSP: "dsusp",
|
||||
ssh.VREPRINT: "rprnt",
|
||||
ssh.VWERASE: "werase",
|
||||
ssh.VLNEXT: "lnext",
|
||||
ssh.VFLUSH: "flush",
|
||||
ssh.VSWTCH: "swtch",
|
||||
ssh.VSTATUS: "status",
|
||||
ssh.VDISCARD: "discard",
|
||||
ssh.IGNPAR: "ignpar",
|
||||
ssh.PARMRK: "parmrk",
|
||||
ssh.INPCK: "inpck",
|
||||
ssh.ISTRIP: "istrip",
|
||||
ssh.INLCR: "inlcr",
|
||||
ssh.IGNCR: "igncr",
|
||||
ssh.ICRNL: "icrnl",
|
||||
ssh.IUCLC: "iuclc",
|
||||
ssh.IXON: "ixon",
|
||||
ssh.IXANY: "ixany",
|
||||
ssh.IXOFF: "ixoff",
|
||||
ssh.IMAXBEL: "imaxbel",
|
||||
ssh.IUTF8: "iutf8",
|
||||
ssh.ISIG: "isig",
|
||||
ssh.ICANON: "icanon",
|
||||
ssh.XCASE: "xcase",
|
||||
ssh.ECHO: "echo",
|
||||
ssh.ECHOE: "echoe",
|
||||
ssh.ECHOK: "echok",
|
||||
ssh.ECHONL: "echonl",
|
||||
ssh.NOFLSH: "noflsh",
|
||||
ssh.TOSTOP: "tostop",
|
||||
ssh.IEXTEN: "iexten",
|
||||
ssh.ECHOCTL: "echoctl",
|
||||
ssh.ECHOKE: "echoke",
|
||||
ssh.PENDIN: "pendin",
|
||||
ssh.OPOST: "opost",
|
||||
ssh.OLCUC: "olcuc",
|
||||
ssh.ONLCR: "onlcr",
|
||||
ssh.OCRNL: "ocrnl",
|
||||
ssh.ONOCR: "onocr",
|
||||
ssh.ONLRET: "onlret",
|
||||
ssh.CS7: "cs7",
|
||||
ssh.CS8: "cs8",
|
||||
ssh.PARENB: "parenb",
|
||||
ssh.PARODD: "parodd",
|
||||
ssh.TTY_OP_ISPEED: "tty_op_ispeed",
|
||||
ssh.TTY_OP_OSPEED: "tty_op_ospeed",
|
||||
}
|
||||
|
||||
// startWithPTY starts cmd with a pseudo-terminal attached to Stdin, Stdout and Stderr.
|
||||
@@ -1011,11 +1011,11 @@ func (ss *sshSession) startWithPTY() (ptyFile, tty *os.File, err error) {
|
||||
tios.Col = int(ptyReq.Window.Width)
|
||||
|
||||
for c, v := range ptyReq.Modes {
|
||||
if c == gossh.TTY_OP_ISPEED {
|
||||
if c == ssh.TTY_OP_ISPEED {
|
||||
tios.Ispeed = int(v)
|
||||
continue
|
||||
}
|
||||
if c == gossh.TTY_OP_OSPEED {
|
||||
if c == ssh.TTY_OP_OSPEED {
|
||||
tios.Ospeed = int(v)
|
||||
continue
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user