func (s *SSHCommandSuite) TestCommandClientKeys(c *gc.C) { defer overrideGenerateKey(c).Restore() clientKeysDir := c.MkDir() defer ssh.ClearClientKeys() err := ssh.LoadClientKeys(clientKeysDir) c.Assert(err, jc.ErrorIsNil) ck := filepath.Join(clientKeysDir, "juju_id_rsa") var opts ssh.Options opts.SetIdentities("x", "y") s.assertCommandArgs(c, s.commandOptions([]string{echoCommand, "123"}, &opts), fmt.Sprintf("%s -o StrictHostKeyChecking no -o PasswordAuthentication no -o ServerAliveInterval 30 -i x -i y -i %s localhost %s 123", s.fakessh, ck, echoCommand), ) }
func (s *AuthKeysSuite) SetUpTest(c *gc.C) { s.BaseSuite.SetUpTest(c) old := utils.Home() newhome := c.MkDir() utils.SetHome(newhome) s.AddCleanup(func(*gc.C) { ssh.ClearClientKeys() utils.SetHome(old) }) s.dotssh = filepath.Join(newhome, ".ssh") err := os.Mkdir(s.dotssh, 0755) c.Assert(err, jc.ErrorIsNil) }
func (s *SSHCommonSuite) SetUpTest(c *gc.C) { s.JujuConnSuite.SetUpTest(c) ssh.ClearClientKeys() s.PatchValue(&getJujuExecutable, func() (string, error) { return "juju", nil }) s.bin = c.MkDir() s.PatchEnvPathPrepend(s.bin) for _, name := range patchedCommands { f, err := os.OpenFile(filepath.Join(s.bin, name), os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0777) c.Assert(err, jc.ErrorIsNil) _, err = f.Write([]byte(fakecommand)) c.Assert(err, jc.ErrorIsNil) err = f.Close() c.Assert(err, jc.ErrorIsNil) } client, _ := ssh.NewOpenSSHClient() s.PatchValue(&ssh.DefaultClient, client) }
func (s *SSHGoCryptoCommandSuite) TestClientNoKeys(c *gc.C) { client, err := ssh.NewGoCryptoClient() c.Assert(err, jc.ErrorIsNil) 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, jc.ErrorIsNil) s.PatchValue(ssh.SSHDial, func(network, address string, cfg *cryptossh.ClientConfig) (*cryptossh.Client, 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 *ClientKeysSuite) SetUpTest(c *gc.C) { s.FakeHomeSuite.SetUpTest(c) s.AddCleanup(func(*gc.C) { ssh.ClearClientKeys() }) generateKeyRestorer := overrideGenerateKey(c) s.AddCleanup(func(*gc.C) { generateKeyRestorer.Restore() }) }
func (s *AuthKeysSuite) TearDownTest(c *gc.C) { ssh.ClearClientKeys() s.BaseSuite.TearDownTest(c) }