
ssh2_publickey_list 함수는 SSH 서버의 인증 키 목록을 반환하는 함수입니다. 하지만 이 함수를 사용하여 인증 키 목록을 가져올 때, 일부 키가 잘못된 형식으로 반환되는 것을 관찰할 수 있습니다.
이러한 문제의 원인은 SSH 서버의 인증 키 목록이 잘못된 형식으로 저장된 경우입니다. SSH 서버의 인증 키 목록은 OpenSSH 서버에서 사용하는 PEM 형식의 키 목록으로 저장됩니다. 하지만 ssh2_publickey_list 함수는 이 PEM 형식의 키 목록을 읽을 수 없을 때, 잘못된 형식의 키 목록을 반환할 수 있습니다.
이 문제를 해결하는 방법은 다음과 같습니다.
1. SSH 서버의 인증 키 목록이 잘못된 형식으로 저장되지 않도록 확인합니다.
2. ssh2_publickey_list 함수를 사용할 때, PEM 형식의 키 목록을 읽을 수 있도록 설정합니다.
3. 잘못된 형식의 키 목록을 필터링하거나 제거합니다.
예를 들어, SSH 서버의 인증 키 목록이 잘못된 형식으로 저장되지 않도록 확인할 수 있습니다. SSH 서버의 인증 키 목록을 PEM 형식으로 저장하려면, SSH 서버의 OpenSSH 구성 파일(/etc/ssh/sshd_config)에 다음 설정을 추가합니다.
#hostingforum.kr
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
이러한 설정을 추가하면, SSH 서버의 인증 키 목록은 PEM 형식으로 저장됩니다.
또한, ssh2_publickey_list 함수를 사용할 때, PEM 형식의 키 목록을 읽을 수 있도록 설정할 수 있습니다. ssh2_publickey_list 함수의 옵션인 'ssh2_publickey_list($ssh, SSH2_PUBLICKEY_LIST_PEM)'을 사용하면, PEM 형식의 키 목록을 읽을 수 있습니다.
#hostingforum.kr
$ssh = ssh2_connect('example.com', 22);
ssh2_auth_publickey_file($ssh, 'username', '/path/to/private/key');
$publicKeys = ssh2_publickey_list($ssh, SSH2_PUBLICKEY_LIST_PEM);
이러한 설정을 추가하면, ssh2_publickey_list 함수는 PEM 형식의 키 목록을 읽을 수 있습니다.
마지막으로, 잘못된 형식의 키 목록을 필터링하거나 제거할 수 있습니다. 잘못된 형식의 키 목록을 필터링하거나 제거하려면, ssh2_publickey_list 함수의 결과를 검사하여 잘못된 형식의 키 목록을 식별하고 제거할 수 있습니다.
#hostingforum.kr
$publicKeys = ssh2_publickey_list($ssh, SSH2_PUBLICKEY_LIST_PEM);
$filteredKeys = array_filter($publicKeys, function($key) {
return strpos($key, '-----BEGIN RSA PRIVATE KEY-----') === 0;
});
이러한 코드를 사용하면, 잘못된 형식의 키 목록을 필터링하거나 제거할 수 있습니다.
이러한 방법을 사용하면, ssh2_publickey_list 함수를 사용하여 인증 키 목록을 가져올 때, 잘못된 형식의 키 목록을 반환하는 문제를 해결할 수 있습니다.
2025-04-27 03:49