Открытые/закрытые ключи, сгенерированные SshKeyGenerator, не работают

Я использую этот простой код

        int keySize = 2048;
        string publicKey, privateKey;

        var keygen = new SshKeyGenerator.SshKeyGenerator(keySize);

        publicKey = keygen.ToRfcPublicKey();
        privateKey = keygen.ToPrivateKey();

        using (StreamWriter sw = new StreamWriter(@"C:\Users\Admin\.ssh\id_rsa", false, Encoding.UTF8))
        {
            sw.WriteLine(privateKey);
        }

        using (StreamWriter sw = new StreamWriter(@"C:\Users\Admin\.ssh\authorized_keys", false, Encoding.UTF8))
        {
            sw.WriteLine(publicKey);
        }

А затем попробуйте подключиться к SSH-серверу с помощью OpenSSH на Win10, например

ssh admin@localhost -i "C:\Users\Admin\.ssh\id_rsa"

И это не работает.

Однако ключи, сгенерированные простым «ssh-keygen» в консоли, работают отлично, что я здесь делаю неправильно?


person Kilabarus    schedule 25.04.2021    source источник
comment
В VS у вас нет привилегий администратора, если вы не щелкните правой кнопкой мыши ярлык VS и не выберите «Запуск от имени администратора».   -  person jdweng    schedule 25.04.2021


Ответы (1)


Вместо того, чтобы пытаться получить доступ к C:\Users\Admin форме VSCode, вы можете получить значение среды USEPROFILE и использовать его в качестве базовой папки для .ssh .

System.Environment.GetEnvironmentVariable("USERPROFILE"); 

Таким образом, VSCode, запущенный как вы (а не как администратор), будет работать, если вы переместите свои ключи в %USERPROFILE%\.ssh.
В любом случае лучше не работать как администратор, если это возможно (например, лучше не работать как root линукс).

person VonC    schedule 26.04.2021