func (s *AuthorisedKeysKeysSuite) TestReplaceKeepsUnrecognised(c *gc.C) { writeAuthKeysFile(c, []string{sshtesting.ValidKeyOne.Key, "invalid-key"}) anotherKey := sshtesting.ValidKeyTwo.Key + " anotheruser@host" err := ssh.ReplaceKeys(testSSHUser, anotherKey) c.Assert(err, jc.ErrorIsNil) actual, err := ssh.ReadAuthorisedKeys(testSSHUser) c.Assert(err, jc.ErrorIsNil) c.Assert(actual, gc.DeepEquals, []string{"invalid-key", anotherKey}) }
// writeSSHKeys writes out a new ~/.ssh/authorised_keys file, retaining any non Juju keys // and adding the specified set of Juju keys. func (kw *keyupdaterWorker) writeSSHKeys(jujuKeys []string) error { allKeys := kw.nonJujuKeys // Ensure any Juju keys have the required prefix in their comment. for i, key := range jujuKeys { jujuKeys[i] = ssh.EnsureJujuComment(key) } allKeys = append(allKeys, jujuKeys...) return ssh.ReplaceKeys(SSHUser, allKeys...) }
func (s *AuthorisedKeysKeysSuite) TestReplaceKeys(c *gc.C) { firstKey := sshtesting.ValidKeyOne.Key + " user@host" anotherKey := sshtesting.ValidKeyTwo.Key writeAuthKeysFile(c, []string{firstKey, anotherKey}) // replaceKey is created without a comment so test that // ReplaceKeys handles keys without comments. This is // because existing keys may not have a comment and // ReplaceKeys is used to rewrite the entire authorized_keys // file when adding new keys. replaceKey := sshtesting.ValidKeyThree.Key err := ssh.ReplaceKeys(testSSHUser, replaceKey) c.Assert(err, jc.ErrorIsNil) actual, err := ssh.ListKeys(testSSHUser, ssh.FullKeys) c.Assert(err, jc.ErrorIsNil) c.Assert(actual, gc.DeepEquals, []string{replaceKey}) }