示例#1
0
        public static string[] GenerateKeyPair(string output_path, string key_name)
        {
            key_name += ".key";
            string key_file_path = Path.Combine (output_path, key_name);

            if (File.Exists (key_file_path)) {
                PryanetLogger.LogInfo ("Auth", "A key pair exists ('" + key_name + "'), leaving it untouched");
                return new string [] { key_file_path, key_file_path + ".pub" };
            }

            string computer_name = System.Net.Dns.GetHostName ();

            if (computer_name.EndsWith (".local"))
                computer_name = computer_name.Substring (0, computer_name.Length - 6);

            string arguments = "-t rsa " + // crypto type
                "-P \"\" " + // empty password
                "-C \"" + computer_name + "\" " + // key comment
                "-f \"" + key_name + "\""; // file name

            PryanetKeyProcess process = new PryanetKeyProcess ("ssh-keygen", arguments);
            process.StartInfo.WorkingDirectory = output_path;
            process.Start ();
            process.WaitForExit ();

            if (process.ExitCode == 0)
                PryanetLogger.LogInfo ("Auth", "Created keypair '" + key_file_path + "'");
            else
                PryanetLogger.LogInfo ("Auth", "Could not create key pair '" + key_file_path + "'");

            return new string [] { key_file_path, key_file_path + ".pub" };
        }
示例#2
0
        public static void ListPrivateKeys()
        {
            PryanetKeyProcess process = new PryanetKeyProcess ("ssh-add", "-l");
            process.Start ();
            string keys_in_use = process.StandardOutput.ReadToEnd ();
            process.WaitForExit ();

            PryanetLogger.LogInfo ("Auth", "The following keys may be used:\n" + keys_in_use.Trim ());
        }
示例#3
0
        public static void ImportPrivateKey(string key_file_path)
        {
            // Use forward slashes when dealing with Windows domain accounts
            if (key_file_path.StartsWith ("\\\\"))
                key_file_path = key_file_path.Replace ("\\", "/");

            PryanetKeyProcess process = new PryanetKeyProcess ("ssh-add", "\"" + key_file_path + "\"");
            process.Start ();
            process.WaitForExit ();

            if (process.ExitCode == 0)
                PryanetLogger.LogInfo ("Auth", "Imported key '" + key_file_path + "'");
            else
                PryanetLogger.LogInfo ("Auth", "Could not import key '" + key_file_path + "', " +
                    process.StandardError.ReadToEnd ());
        }