Я пытаюсь установить SSH-соединение с использованием ключевого текста вместо ключевого пути, но безуспешно.
Я сохраняю текст ключа в зашифрованном виде в базе данных по соображениям мобильности и безопасности, но не могуввести в конфигурации SSH, чтобы установить соединение.Все, что я получаю, это «не удается подключиться к серверу».
Я также пытался использовать жестко закодированный текст ключа, но безуспешно.
Я думаю, что нет проблем с сохранением ключа в базе данных и его извлечением.позже, потому что, если я сохраню полученный ключ из базы данных во временном файле в хранилище и использую путь к ключу, я установлю успешное соединение.
Это работает:
<?php
public function getSshConfig(): array
{
$identity = $this->identityByServiceNumber(22);
$config = array_merge([
'host' => $this->connectionRoute(22),
'username' => $identity->username,
'agent' => '',
'timeout' => 60,
], $identity->private_key ? [
'key' => Storage::put('keys' . DIRECTORY_SEPARATOR . $identity->id, $identity->private_key) ?
storage_path('app' . DIRECTORY_SEPARATOR . 'keys' . DIRECTORY_SEPARATOR . $identity->id) : null,
'keyphrase' => $identity->password,
] : [
'password' => $identity->password,
]);
return $config;
}
Это неработа:
public function getSshConfig(): array
{
$identity = $this->identityByServiceNumber(22);
$config = array_merge([
'host' => $this->connectionRoute(22),
'username' => $identity->username,
'key' => '',
'agent' => '',
'timeout' => 60,
], $identity->private_key ? [
'keytext' => $identity->private_key,
'keyphrase' => $identity->password,
] : [
'password' => $identity->password,
]);
return $config;
}
ни эта работа:
public function getSshConfig(): array
{
$identity = $this->identityByServiceNumber(22);
$config = array_merge([
'host' => $this->connectionRoute(22),
'username' => $identity->username,
'key' => '',
'agent' => '',
'timeout' => 60,
], $identity->private_key ? [
'keytext' => '-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,069AEAFA71947BEDA3AAA1EC609D62B0
······················································
-----END RSA PRIVATE KEY-----',
'keyphrase' => $identity->password,
] : [
'password' => $identity->password,
]);
return $config;
}
и эта:
'-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,069AEAFA71947BEDA3AAA1EC609D62B0
······················································
-----END RSA PRIVATE KEY-----'
Это именно то, что хранится в базе данных (зашифровано в хранилище и расшифрованопосле извлечения) и, как я уже сказал, сработает, если я сохраню во временном файле и использую ключевой путь.