我使用以下代码使用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')
如果我要连接到远程服务器,远程服务器上是否需要密钥文件(公共或私有?),我该如何引用它?我不确定代码是否相同或确切如何运作。
感谢任何解释。
答案 0 :(得分:1)
为了让远程服务器接受密钥,您需要将公钥的副本放在名为authorized_keys
的文件中,该文件位于您所在用户的主文件夹的.ssh
目录中以登录身份登录。
因此,要在远程服务器上进行身份验证bob
,您将在远程控制器上的authorized_keys
中有一个名为/home/bob/.ssh
的文件,其中包含公钥(例如ssh-rsa AAAA..<long-string-of-text>..cXrTp bob@host
)(你可以拥有多个授权密钥,每个密钥在文件中都有自己的行)。
id_rsa
和id_rsa.pub
文件需要位于您调用ssh2_auth_pubkey_file
并可通过PHP脚本读取的客户端系统上。
这篇关于SSH Keys的文章很好地解释了如何为基于密钥的身份验证生成密钥对,以及如何将密钥传输到主机。
如果您尝试进行身份验证的用户的authorized_keys
文件中没有公钥,则身份验证将无效。
此外,请务必采取必要的安全预防措施,使用密码保护私钥,使私钥在系统上的其他用户无法读取,并保护脚本中的密码或控制对脚本的访问权限如果它将被存储,请阅读它。