From 3e480df721aad3123a55d057b259d47b31a1b918 Mon Sep 17 00:00:00 2001 From: zachmann <gabriel.zachmann@kit.edu> Date: Thu, 20 Jan 2022 09:05:51 +0100 Subject: [PATCH] fix problems in ssh --- internal/db/dbmigrate/scripts/v0.4.0.pre.sql | 2 +- internal/endpoints/settings/grants/ssh/ssh.go | 3 +++ internal/server/ssh/at.go | 6 ++++-- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/internal/db/dbmigrate/scripts/v0.4.0.pre.sql b/internal/db/dbmigrate/scripts/v0.4.0.pre.sql index 343c2b6e..e2f9253b 100644 --- a/internal/db/dbmigrate/scripts/v0.4.0.pre.sql +++ b/internal/db/dbmigrate/scripts/v0.4.0.pre.sql @@ -519,7 +519,7 @@ BEGIN DECLARE rtCount INT; SELECT m.`user_id` FROM MTokens m WHERE m.id = MTID INTO uid; - SELECT s.MT_id, s.key_id FROM SSHPublicKeys s WHERE s.ssh_key_fp = FP AND s.user = uid INTO sshMTID, cid; + SELECT s.MT_id, s.MT_crypt FROM SSHPublicKeys s WHERE s.ssh_key_fp = FP AND s.user = uid INTO sshMTID, cid; SELECT m.`rt_id` FROM MTokens m WHERE m.id = sshMTID INTO rid; SELECT k.`key_id` FROM RT_EncryptionKeys k WHERE k.rt_id = rid AND k.MT_id = sshMTID INTO rckid; CALL EncryptionKeys_Delete(rckid); diff --git a/internal/endpoints/settings/grants/ssh/ssh.go b/internal/endpoints/settings/grants/ssh/ssh.go index 9326ba65..ade356d7 100644 --- a/internal/endpoints/settings/grants/ssh/ssh.go +++ b/internal/endpoints/settings/grants/ssh/ssh.go @@ -142,6 +142,9 @@ func handleAddSSHKey(ctx *fiber.Ctx) error { }.Send(ctx) } sshKeyFP := gossh.FingerprintSHA256(sshKey) + if len(req.Capabilities) == 0 { + req.Capabilities = api.Capabilities{api.CapabilityAT} + } return settings.HandleSettingsHelper( ctx, &req.Mytoken, api.CapabilitySSHGrant, event.FromNumber(event.SSHKeyAdded, ""), fiber.StatusOK, diff --git a/internal/server/ssh/at.go b/internal/server/ssh/at.go index d241981d..8f96dfa1 100644 --- a/internal/server/ssh/at.go +++ b/internal/server/ssh/at.go @@ -18,10 +18,11 @@ import ( func handleSSHAT(reqData []byte, s ssh.Session) error { ctx := s.Context() req := pkg.NewAccessTokenRequest() - req.GrantType = model.GrantTypeMytoken if len(reqData) > 0 { if err := json.Unmarshal(reqData, &req); err != nil { - return err + if err.Error() != "token not valid" { + return err + } } } mt := ctx.Value("mytoken").(*mytoken.Mytoken) @@ -29,6 +30,7 @@ func handleSSHAT(reqData []byte, s ssh.Session) error { IP: ctx.Value("ip").(string), UserAgent: ctx.Value("user_agent").(string), } + req.GrantType = model.GrantTypeMytoken req.Mytoken = mt.ToUniversalMytoken() rlog := logger.GetSSHRequestLogger(ctx.Value("session").(string)) rlog.Debug("Handle AT from ssh") -- GitLab