我正在使用下面的代码使用ssh2在本地连接,但是我正在试图弄清楚连接到远程服务器时如何处理公钥/私钥。

$SSH_CONNECTION = ssh2_connect('localhost', 22, array('hostkey'=>'ssh-rsa'));
ssh2_auth_pubkey_file($SSH_CONNECTION, 'username','/path/to/id_rsa.pub','/path/to/id_rsa')

如果我连接到远程服务器,是否需要密钥文件(公共或私有?)在远程服务器上,如何引用它?我不确定代码是否相同,也不知道它是如何工作的。
感谢任何解释。

最佳答案

为了让远程服务器接受密钥,您需要将公钥的副本放在登录用户的主文件夹的authorized_keys目录中名为.ssh的文件中。
因此,要在远程服务器上以bob身份进行身份验证,您需要在远程服务器上有一个名为authorized_keys的文件,其中包含公钥(例如/home/bob/.ssh)(您可以有多个授权密钥,每个密钥在文件中都有自己的行)。
ssh-rsa AAAA..<long-string-of-text>..cXrTp bob@hostid_rsa文件需要在调用id_rsa.pub的客户机系统上,并由php脚本读取。
这篇关于SSH Keys的文章很好地解释了如何为基于密钥的身份验证生成密钥对,以及如何将密钥传输到主机。
如果没有为您尝试身份验证的用户的ssh2_auth_pubkey_file文件中的公钥,身份验证将无法工作。
此外,请确保采取必要的安全预防措施,使用密码短语保护私钥,使系统上的其他用户无法读取私钥,并在脚本中保护密码短语,或控制对脚本将读取的文件(如果将存储该文件)的访问。

10-06 03:15