ssh: shell start support

This commit is contained in:
Pavel 2023-11-19 14:12:39 +03:00
parent 90332cd134
commit f654deb300
3 changed files with 13 additions and 4 deletions

View File

@ -62,6 +62,7 @@ func (d *SSH) forward(val sshtun.Forward, domainMatcher func(string)) conn {
d.auth,
sshtun.SessionConfig{
NoPTY: d.params.NoPTY,
Shell: d.params.Shell,
FakeRemoteHost: d.params.FakeRemoteHost,
KeepAliveInterval: uint(d.params.KeepAlive.Interval),
KeepAliveMax: uint(d.params.KeepAlive.MaxAttempts),

View File

@ -17,6 +17,7 @@ type Params struct {
Mode types.DomainMode `mapstructure:"mode" validate:"required,oneof=single multi"`
FakeRemoteHost bool `mapstructure:"fake_remote_host"`
NoPTY bool `mapstructure:"nopty"`
Shell bool `mapstructure:"shell"`
Commands types.Commands `mapstructure:"commands"`
}

View File

@ -28,6 +28,7 @@ type Tunnel struct {
type SessionConfig struct {
NoPTY bool
Shell bool
FakeRemoteHost bool
KeepAliveInterval uint
KeepAliveMax uint
@ -112,12 +113,18 @@ func (t *Tunnel) connect(ctx context.Context, bannerCb ssh.BannerCallback, sessi
})
if err != nil {
t.log.Warnf("PTY allocation failed: %s", err.Error())
} else {
if err := sess.Shell(); err != nil {
t.log.Warnf("failed to start shell: %s", err.Error())
}
}
}
if t.sessConfig.Shell {
if err := sess.Shell(); err != nil {
t.log.Warnf("failed to start shell: %s", err.Error())
}
wg.Add(1)
go func() {
defer wg.Done()
_ = sess.Wait()
}()
}
wg.Add(1)
go func() {