You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在浏览器中使用JavaScript获取服务器的host key

浏览器环境原生JS无法直接实现ssh-keyscan等价功能

原因如下:

  • 普通网页运行在浏览器的安全沙箱中,JS的网络能力被严格限制,仅支持HTTP/HTTPS、WebSocket等高层协议请求,没有权限直接建立原始TCP连接访问目标服务器的22 SSH端口,自然无法完成SSH协议交互拉取主机公钥。
  • 仅Chrome扩展、Chrome App等需要用户主动授权的特殊运行环境,才可以调用专属的socket类API实现TCP连接,完全无法在通用公网网页场景落地。
可落地的替代方案(需要自有服务端配合)

如果你的业务场景允许接入自有后端做中转,可按以下逻辑实现:

  • 后端写一个简单的HTTP接口,接收前端传入的目标主机名参数,在服务端调用ssh-keyscan工具拉取对应主机的公钥
  • 前端通过原生fetch调用该接口即可拿到目标公钥,前端示例代码如下:
async function fetchSshHostPublicKey(hostname) {
  try {
    const response = await fetch(`/your-backend-api/ssh-pubkey?host=${encodeURIComponent(hostname)}`);
    if (!response.ok) throw new Error('接口请求失败');
    return await response.text();
  } catch (err) {
    console.error('拉取SSH主机公钥失败:', err);
    return null;
  }
}

如果你的运行场景是Node.js服务端而非浏览器,可以直接使用ssh2等第三方SSH库直接实现拉取逻辑,不需要额外中转。

内容的提问来源于stack exchange,提问作者c_anirudh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 03:18:02