Ошибка аутентификации или частичный успех с ckosshtunnel и AuthenticatePk - PullRequest
0 голосов
/ 24 апреля 2019

У меня проблема с подключением через publickey к серверу ssh через командную строку:

ssh -N -L 12345:127.0.0.1:22 -i /Users/kylehankinson/.ssh/id_rsa USER@HOST

Но если я попробую то же самое через код:

CkoSshKey * sshkey = [[CkoSshKey alloc] init];
sshkey.Password = @"blahblah";

NSString * privateKeyString = [sshkey LoadText: @"/Users/kylehankinson/.ssh/id_rsa"];

if(![sshkey FromPuttyPrivateKey: privateKeyString])
{
    NSLog(@"Had failure: %@", sshkey.LastErrorText);
    return;
}

CkoSshTunnel *ssh = [[CkoSshTunnel alloc] init];
success = [ssh Connect: @"HOST" port: @(22)];
if (success != YES)
{
    NSLog(@"%@",ssh.LastErrorText);
    return;
}

success = [ssh AuthenticatePk: @"USER"
                   privateKey: sshkey];
if(!success)
{
    NSLog(@"%@",ssh.LastErrorXml);
    return;
}

Я получаю следующую ошибку:

<ChilkatLog>
  <AuthenticatePK>
    <DllDate>Apr 16 2019</DllDate>
    <ChilkatVersion>9.5.0.78</ChilkatVersion>
    <UnlockPrefix>xxxxxxx</UnlockPrefix>
    <Architecture>Little Endian; 64-bit</Architecture>
    <Language>Cocoa Objective-C</Language>
    <VerboseLogging>0</VerboseLogging>
    <login>sshtunnel</login>
    <sshAuthenticatePk>
      <keyFingerprint>ssh-rsa 2048 xxxxxxxxx</keyFingerprint>
      <requestUserAuthService>
        <sendServiceRequest>
          <svcName>ssh-userauth</svcName>
          <SentServiceReq>ssh-userauth</SentServiceReq>
        </sendServiceRequest>
        <info>ssh-userauth service accepted.</info>
      </requestUserAuthService>
      <info>Using an RSA key.</info>
      <info>Sent public-key request.</info>
      <AuthList>publickey,password</AuthList>
      <rsaSigLen>256</rsaSigLen>
      <info>Sent public-key request with signature.</info>
      <error>Authentication failed or partial success. (4)</error>
      <PartialSuccess4>0</PartialSuccess4>
      <AuthList>publickey,password</AuthList>
      <error>Publickey authentication failed..</error>
    </sshAuthenticatePk>
    <error>Failed.</error>
  </AuthenticatePK>
</ChilkatLog>

Есть предложения?

1 Ответ

1 голос
/ 25 апреля 2019

Спасибо, Кайл,

Вот новая сборка, которая решает проблему: https://chilkatdownload.com/prerelease/chilkat-9.5.0-macosx-objc-1408.zip

Источник проблемы был связан с форматом BLOB-объекта с закрытым ключом в формате ключа OpenSSH.Порядок синтаксического анализа ключевых частей RSA был неправильным.(Если ключ был загружен из формата закрытого ключа PuTTY, .ppk, то проблем не было ..)

PS> Ссылка для скачивания выше является временной и не будет действительной в будущем ..

...