Luna HSM执行pscp命令报Token number 2无法识别、错误22如何解决
故障现象
在Luna HSM环境下执行pscp命令时触发异常,具体报错特征如下:
- 核心参数错误提示:
Token number 2 (-d) not recognized
- 命令返回码:22,对应错误类型为 Invalid argument(无效参数)
- 连带致命错误提示:
Fatal: Received unexpected end-of-file from server in Luna HSM
故障根因
该异常为参数解析冲突叠加配置错误触发,EOF报错为前置错误的连带结果,并非独立网络故障:
- 参数解析冲突:Luna HSM对原生
pscp做了功能扩展,新增-d <槽位号>参数用于指定操作对应的HSM token槽位,但原生pscp本身也预留了-d参数位,且不接受数字格式的参数值。如果执行命令时将HSM扩展参数放在pscp原生参数的解析位置,会被pscp直接识别为非法参数,直接抛出22无效参数错误。 - 连接异常中断:
pscp在参数解析阶段就异常退出,没有完成和Luna HSM服务端的连接握手流程,服务端主动断开连接时客户端就会抛出意外EOF的致命提示。 - 额外触发条件:如果参数格式正确仍然提示token编号无法识别,说明当前HSM客户端枚举到的有效槽位中不存在编号为2的token,属于槽位编号配置错误。
修复方案
按以下优先级排查修复:
- 修正命令参数格式,所有Luna HSM专属的扩展参数必须放在
pscp命令的最后,且在扩展参数前加--分隔符,明确告诉pscp分隔符后的参数不属于原生参数范围,不做原生参数解析。
错误命令示例:pscp -d 2 ./local_file.par hsm_user@hsm_ip:/partition_path/
正确命令示例:pscp ./local_file.par hsm_user@hsm_ip:/partition_path/ -- -d 2 - 执行Luna客户端自带的槽位查询命令,确认实际可用的token槽位编号,替换命令中错误的槽位号2:
- 直接在shell执行
vtl listslots查看所有客户端可识别的HSM槽位 - 或进入
lunacm交互界面执行slot list查询可用槽位
- 直接在shell执行
- 以上两步操作完成后如果仍报EOF错误,执行
systemctl restart ntls重启HSM客户端的NTLS网络服务,确认当前操作用户属于HSM客户端用户组、拥有对应分区的操作权限后重试。
内容的提问来源于stack exchange,提问作者Mohamad Hafezi
相关产品推荐
相关产品推荐

