func (s *ClientKeysSuite) SetUpTest(c *gc.C) { s.LoggingSuite.SetUpTest(c) fakeHome := testing.MakeEmptyFakeHome(c) s.AddCleanup(func(*gc.C) { fakeHome.Restore() }) s.AddCleanup(func(*gc.C) { ssh.ClearClientKeys() }) generateKeyRestorer := overrideGenerateKey(c) s.AddCleanup(func(*gc.C) { generateKeyRestorer.Restore() }) }
func (s *SSHCommandSuite) TestCommandClientKeys(c *gc.C) { defer overrideGenerateKey(c).Restore() clientKeysDir := c.MkDir() defer ssh.ClearClientKeys() err := ssh.LoadClientKeys(clientKeysDir) c.Assert(err, gc.IsNil) ck := filepath.Join(clientKeysDir, "juju_id_rsa") var opts ssh.Options opts.SetIdentities("x", "y") s.assertCommandArgs(c, s.commandOptions([]string{"echo", "123"}, &opts), s.fakessh+" -o StrictHostKeyChecking no -o PasswordAuthentication no -i x -i y -i "+ck+" localhost echo 123", ) }
func (s *SSHGoCryptoCommandSuite) TestClientNoKeys(c *gc.C) { client, err := ssh.NewGoCryptoClient() c.Assert(err, gc.IsNil) cmd := client.Command("0.1.2.3", []string{"echo", "123"}, nil) _, err = cmd.Output() c.Assert(err, gc.ErrorMatches, "no private keys available") defer ssh.ClearClientKeys() err = ssh.LoadClientKeys(c.MkDir()) c.Assert(err, gc.IsNil) s.PatchValue(ssh.SSHDial, func(network, address string, cfg *cryptossh.ClientConfig) (*cryptossh.ClientConn, error) { return nil, errors.New("ssh.Dial failed") }) cmd = client.Command("0.1.2.3", []string{"echo", "123"}, nil) _, err = cmd.Output() // error message differs based on whether using cgo or not c.Assert(err, gc.ErrorMatches, "ssh.Dial failed") }
func (s *AuthKeysSuite) TearDownTest(c *gc.C) { ssh.ClearClientKeys() s.LoggingSuite.TearDownTest(c) }