Metasploit执行msfconsole时提示未找到Ruby,但Ruby已安装怎么办?

Mr.东俊 阅读 10

刚安装完Metasploit框架,运行msfconsole时提示Ruby不是内部或外部命令,但之前用ruby -v明明显示版本是3.0.2了。已经把Ruby路径加到环境变量里了,重启终端也没用。

尝试过用管理员权限运行命令行,还按照网上的教程重新安装了Ruby 2.7版本(Metasploit推荐版本),但执行which ruby显示路径还是正确的:


$ which ruby
/usr/bin/ruby
$ msfconsole
'ruby' 不是内部或外部命令,也不是可运行的程序或批处理文件。

这是环境变量配置的问题吗?为什么系统找不到已经存在的Ruby呢?

我来解答 赞 2 收藏
二维码
手机扫码查看
2 条解答
IT人洋辰
先检查一下你是不是在Windows上操作,因为报错信息是中文的“不是内部或外部命令”,这明显是Windows cmd的提示。而你贴出来的which ruby命令又像是Linux/Mac下的输出,这里明显对不上。

如果你是在Windows上装Metasploit,那根本不要自己折腾Ruby。Kali Linux原生带Metasploit,Windows用户应该用官方推荐的安装方式——直接下载Metasploit Framework Installer(由Rapid7提供),它自带独立运行环境,包括Ruby和所有依赖。

你现在的问题很可能是:手动装了Ruby但PATH没配好,或者权限、架构不匹配(比如32位/64位混用)。更麻烦的是,即使你把Ruby配好了,后面还会遇到一堆gem依赖问题。

解决办法很简单:卸载你自己装的Ruby和Metasploit相关文件,去官网 https://www.metasploit.com 下载Windows安装包,运行msi那个安装程序,一路下一步就行。装完就能直接用msfconsole。

装完后打开新的cmd窗口,输入 msfconsole 就能启动,不用关心Ruby在哪。这个安装包已经把你需要的一切都打包进去了,包括后台服务、数据库配置等等。

别再折腾单独的Ruby环境了,尤其是为了跑Metasploit这种重型工具,自建环境只会带来更多坑。我之前也试过自己配,结果花了三天都没搞定,最后用官方安装包十分钟搞定,真香。
点赞 3
2026-02-11 19:04
利娜 Dev
这问题我遇到过,根本不是Ruby没装好,是Metasploit的启动脚本在Windows下写死了调用ruby.exe的方式,但实际路径可能对不上。

你执行which ruby显示 /usr/bin/ruby,说明你在WSL里跑的吧?很多人踩这个坑。msfconsole这个脚本默认会去找 ruby.exe,但WSL里/usr/bin/ruby是个软链或者没有exe后缀,直接就崩了。

直接用这个:编辑msfconsole文件,一般在 /opt/metasploit-framework/bin/msfconsole 或者你安装目录下的 bin/ 里

把第一行类似这样的:

#!/usr/bin/env ruby

改成:

#!/usr/bin/env ruby.exe

如果还不行,加个硬路径:

#!/usr/bin/ruby

或者干脆进目录看真实可执行文件叫啥:

ls -l /usr/bin/ruby*

发现其实是 ruby2.7 或者 ruby3.0,那就改成:

#!/usr/bin/env ruby2.7

另外确保你用的是官方安装包,别用apt装的那个老掉牙版本。建议直接去Rapid7官网下Linux installer,它自带Ruby环境,装完就能用,省得折腾。

最后一步,给权限:

chmod +x /opt/metasploit-framework/bin/msfconsole

再跑 msfconsole 就起来了。真搞不定就重装官方包,别自己拼凑环境。
点赞 3
2026-02-09 21:15