我正在尝试使用 SSH密钥连接远程服务器。我使用phpseclib 2.0
生成SSH密钥对,并将密钥存储在数据库中。以下是我尝试连接的方式。
Config::set('remote.connections.production.host',$server->ip);
Config::set('remote.connections.production.username',$server->username);
Config::set('remote.connections.production.keytext',$server->meta()->where('meta_key','private_key')->first()->meta_value);
我有与我在远程服务器的~/.ssh/authorized_keys
文件中使用的私钥相对应的公钥。 .ssh
目录的权限为700
,authorized_keys
的权限为600
,这是完美的。
首先我认为这可能是\r\n
问题,但之后我尝试在连接之前从私钥中删除所有\r\n
,但我仍然得到unable to connect to remote server
。我不知道问题出在哪里。我从最近两天开始都没有运气。
我认为SSH密钥一旦进入数据库就会被破坏。以下是我在数据库中生成和存储SSH密钥对的方法。
$rsa = new RSA();
$rsa->setPublicKeyFormat(RSA::PUBLIC_FORMAT_OPENSSH);
$keys = $rsa->createKey(2048);
$privateKey = $keys['privatekey'];
$publicKey = $keys['publickey'];
$server->meta()->create([
'meta_key' => 'private_key',
'meta_value' => $privateKey
]);
$server->meta()->create([
'meta_key' => 'public_key',
'meta_value' => $publicKey
]);
任何帮助将不胜感激。正在生成密钥,因为我可以在数据库中看到它。