-- 求助 php lib_ssh2 问题

totola147 2017-09-24 09:22:30
在做ssh2 公钥授权文件登陆验证时,需要验证ssh server fingerprint 来避免中间人攻击,整个过程类似官方文档案例:

<?php
$known_host = '6F89C2F0A719B30CC38ABDF90755F2E4';

$connection = ssh2_connect('shell.example.com', 22);

$fingerprint = ssh2_fingerprint($connection,
SSH2_FINGERPRINT_MD5 | SSH2_FINGERPRINT_HEX);

if ($fingerprint != $known_host) {
die("HOSTKEY MISMATCH!\n" .
"Possible Man-In-The-Middle Attack?");
}
?>

但是ssh server 的指纹 通过ssh-keygen -l -f 看到的是带冒号的 像这样
d4:1d:8c:d9:8f:00:b2:xx:xx:xx:xx

而ssh2_fingerprint获取到的是一连串16进制字符
请问大家这两种方式获得的fp 为何不同
...全文
496 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2017-09-25
  • 打赏
  • 举报
回复
没有什么不同,只是加了分界符(:)便于阅读而已
totola147 2017-09-25
  • 打赏
  • 举报
回复
引用 4 楼 totola147 的回复:
[quote=引用 2 楼 totola147 的回复:] [quote=引用 1 楼 xuzuning 的回复:] 没有什么不同,只是加了分界符(:)便于阅读而已
谢谢! 问题解决,ssh2_fingerprint 获取到的 fingerprint 是基于/etc/ssh/ssh_host_dsa_key.pub /etc/ssh/ssh_host_rsa_key.pub 而不能用 ssh-keygen -l -f ~/.ssh 下的 遗留问题:我有两台机器 一台ubuntu 一台 centos6.7 在用auth_pubkey_fil从其他机器登陆时,ubuntu使用的是/etc/ssh/ssh_host_rsa_key.pub的fingerprint 而cento6.7使用的是 /etc/ssh/ssh_host_dsa_key.pub的fingerprint 请问 具体使用了哪个如何判断 [/quote] 这个是sshd 服务配置 /etc/ssh/sshd_config 中RSAAuthentication yes注释去掉 重启sshd即可 问题全部解决 ,再次感谢 xuzuning [/quote] 补充说明: 根据进一步测试,如果首次链接时,保存的是DSA fingerprint, 那么即便sshd 改成 RSA authentication 连接时获取的 ssh server fingerprint 依然是 DSA的,只有将know_host里对应旧的DSA的fingerpint 删除掉,重新链接,才会提示保存新的RSA的fingerprint
totola147 2017-09-25
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
没有什么不同,只是加了分界符(:)便于阅读而已
谢谢! 问题解决,ssh2_fingerprint 获取到的 fingerprint 是基于/etc/ssh/ssh_host_dsa_key.pub /etc/ssh/ssh_host_rsa_key.pub 而不能用 ssh-keygen -l -f ~/.ssh 下的 遗留问题:我有两台机器 一台ubuntu 一台 centos6.7 在用auth_pubkey_fil从其他机器登陆时,ubuntu使用的是/etc/ssh/ssh_host_rsa_key.pub的fingerprint 而cento6.7使用的是 /etc/ssh/ssh_host_dsa_key.pub的fingerprint 请问 具体使用了哪个如何判断
totola147 2017-09-25
  • 打赏
  • 举报
回复
引用 2 楼 totola147 的回复:
[quote=引用 1 楼 xuzuning 的回复:] 没有什么不同,只是加了分界符(:)便于阅读而已
谢谢! 问题解决,ssh2_fingerprint 获取到的 fingerprint 是基于/etc/ssh/ssh_host_dsa_key.pub /etc/ssh/ssh_host_rsa_key.pub 而不能用 ssh-keygen -l -f ~/.ssh 下的 遗留问题:我有两台机器 一台ubuntu 一台 centos6.7 在用auth_pubkey_fil从其他机器登陆时,ubuntu使用的是/etc/ssh/ssh_host_rsa_key.pub的fingerprint 而cento6.7使用的是 /etc/ssh/ssh_host_dsa_key.pub的fingerprint 请问 具体使用了哪个如何判断 [/quote] 这个是sshd 服务配置 /etc/ssh/sshd_config 中RSAAuthentication yes注释去掉 重启sshd即可 问题全部解决 ,再次感谢 xuzuning
xuzuning 2017-09-25
  • 打赏
  • 举报
回复
服务方处理一下就是了,假定要使用无分割符的键 $键 = str_replace($输入键, ':', '');

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧