Как я могу подключиться через sftp, используя закрытый ключ и пароль в perl? - PullRequest
1 голос
/ 02 марта 2020

Я пытался подключиться к серверу sftp, используя perl, я пытался с несколькими модулями и с puTTy, и все же мне не удалось.

use Net::SFTP::Foreign;
use Net::SFTP::Foreign::Backend::Net_SSH2;
use Net::SSH2;

my ($host) = 'xxx.xxxx.xxx';
my ($user) = "user";
my ($pass) = "password"; 
my $ppk_filepath = 'private_file.ppk'

my $ssh2 = Net::SSH2->new();
$ssh2->connect($host) or die "connect failed";
$ssh2->debug(1);
$ssh2->auth_publickey($user, undef, $ppk_filepath, $pass) or $ssh2-> die_with_error;
my $sftp = Net::SFTP::Foreign->new(ssh2 => $ssh2, backend => 'Net_SSH2');
$sftp->error and die "Unable to stablish SFTP connection: ". $sftp->error;`

Обычно я получаю эту ошибку:

Unable to extract public key from private key file: Wrong passphrase or invalid/unrecognized private key file format (-16 LIBSSH2_ERROR_FILE)

Что я могу сделать не так? Есть ли другой способ подключения через sftp с использованием в качестве аутентификации секретного ключа, имени пользователя и пароля в perl? Заранее спасибо

1 Ответ

5 голосов
/ 02 марта 2020

Ключ в формате PuTTY (*.ppk). Вы хотите это в формате OpenS SH (id_rsa). Используйте PuTTYgen, чтобы преобразовать его, загрузив файл .ppk и выбрав Экспорт OpenS SH ключ из меню Преобразования .

...