我正在使用phpseclib连接到刚刚创建的服务器。它永远不会被连接到~/.ssh/known_hosts
中。为防止脚本超时发生,我想绕过警告:
The authenticity of host 'xxx.xxx.xxx.xxx' can't be established.
RSA key fingerprint is xxx.
Are you sure you want to continue connecting (yes/no)?
我知道可以将一个标志传递给OpenSSH以禁用此真实性检查:
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no user@xxx.xxx.xxx.xxx
这是一个进入phpseclib的功能吗?
答案 0 :(得分:1)
phpseclib没有 - 也不能 - 验证主机的真实性。
phpseclib的作用是让您通过$ssh->getServerPublicHostKey()
检索服务器公共主机密钥。您可以在登录服务器之前执行此操作,并且可以将密钥保存在某个位置,无论是在数据库中还是在文件系统上,并在将来的连接上检查该保存的密钥。
我的意思是,phpseclib在哪里保存服务器公共主机密钥呢?它不知道您是否具有数据库访问权限。它不知道任何文件系统是否可写。我想它可以使用tempnam()但是,就像你说的那样,它在初始连接上做了什么?假设您通过Web浏览器(而不是CLI)运行它并显示js弹出窗口?而tempnam()无论如何都不是永久性的。它是否应该在每次/ tmp被文件系统删除时重新提示你?