ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

shellz身份配置完全指南:密钥、密码与ssh-agent三种认证方式清单

shellz身份配置完全指南:密钥、密码与ssh-agent三种认证方式清单 shellz身份配置完全指南密钥、密码与ssh-agent三种认证方式清单【免费下载链接】shellzshellz is a small utility to manage your ssh, telnet, kubernetes, winrm, web or any custom shell in a single place.项目地址: https://gitcode.com/gh_mirrors/sh/shellzshellz 是一个用单一命令行工具统一管理 SSH、Telnet、Kubernetes、WinRM 和自定义 Shell 的轻量级工具而身份配置Identity正是它所有远程认证的核心。本指南完整覆盖 shellz 身份配置密钥认证、密码认证、ssh-agent 认证三种方式的 JSON 写法、适用场景与常见问题帮你一次配好所有远程主机登录。一、认识 shellz 的身份文件shellz 首次运行会在主目录创建~/.shellz文件夹其中idents/子目录存放所有身份文件每个身份一个 JSON 文件shells/子目录存放目标主机配置。身份文件的字段定义见 models/identity.go一共只有四个关键字段字段作用说明name身份名称供 shell 配置引用唯一username登录用户名各协议通用的登录账号key密钥文件路径也可填agent走 ssh-agentpassword登录密码与key按场景搭配使用 默认身份名为default。如果 shell 配置里没写identity字段shellz 会自动使用它见 models/shell.go 中的默认值逻辑。二、三种认证方式完整清单方式 1密码认证password 字段最简单的认证方式直接在身份文件中写明密码适合 Telnet、WinRM 等只支持账号密码协议的会话{ name: admin-tnas, username: admin, password: your-password }在 Telnet 会话中shellz 会自动依次发送用户名和密码完成登录登录逻辑见session/telnet.goWinRM 会话同样使用用户名密码建立客户端连接见session/winrm.go。方式 2密钥文件认证key 字段SSH 场景下的标准做法把key字段指向你的私钥文件{ name: default, username: evilsocket, key: ~/.ssh/id_rsa }shellz 会读取该文件并解析为 SSH 私钥完成认证完整流程路径展开 → 读取文件 → 解析密钥实现在 session/ssh_utils.go 的authFromFile函数中。特别用法Kubernetes Bearer Token 也是走key字段。对于type: kube的会话key指向一个存放 Bearer Token 的文本文件shellz 将其作为BearerTokenFile接入 API 服务器见session/kube.go{ name: microk8s, key: ~/.microk8s-bearer-token }方式 3ssh-agent 认证key 填agent如果你本机已用ssh-add把密钥交给 ssh-agent 托管例如密钥放在密码保护文件里、或团队统一挂载密钥只需把key字段设为特殊值agent{ name: default, username: evilsocket, key: agent }此时 shellz 不再读取任何密钥文件而是通过环境变量SSH_AUTH_SOCK找到本地 ssh-agent 的 Unix 套接字向其请求签名完成认证实现见session/ssh_utils.go中的authFromAgent函数agent这个魔法值定义在SSHAgentKey常量。三种方式速查表认证方式身份文件写法适用场景密码认证password: xxxTelnet、WinRM、老旧 SSH 服务器密钥文件认证key: ~/.ssh/id_rsa绝大多数 SSH 主机ssh-agent 认证key: agent密钥已托管给 ssh-agent / 安全合规要求高的环境三、让身份与 shell 配置正确关联身份配好后在~/.shellz/shells/下为主机创建 shell 文件用identity字段引用身份名称{ name: media-server, host: media.server, port: 22, identity: default }各类型 shell 对认证信息的使用方式一览SSH默认类型密码、密钥文件、agent三者均可组合使用认证方法按顺序尝试Telnet需要usernamepassword连接后自动完成账号密码交互WinRM需要usernamepassword默认走 HTTPS 5986 端口Kube需要username之外用key指向 Bearer Token 文件host填控制面 URL可用kubectl cluster-info | grep control获取四、常见问题与避坑指南 ️Q1提示referenced an unknown identity怎么办shell 文件中的identity名称与~/.shellz/idents/下身份文件的name字段不匹配。注意引用的是身份文件里的name值而不是文件名。Q2agent报错 cant find SSH_AUTH_SOCK variable说明当前 shell 环境里 ssh-agent 没有运行或没在终端中加载。先确认ssh-add -l能看到已加载的密钥并保证运行 shellz 的终端继承了对应的环境变量。Q3私钥文件带密码短语时能直接用吗shellz 的ssh.ParsePrivateKey解析带加密短语的私钥会失败建议改用agent方式——ssh-agent 会在需要时弹出交互输入密码短语是更优雅的解决方案。Q4安全提示身份文件里的明文密码要不要紧身份文件保存在你主目录的~/.shellz/idents/下请确保文件权限仅本人可读如chmod 600。对安全要求高的主机优先使用密钥文件或agent。五、从零开始的快速上手获取 shellz 源码并构建要求 Go 环境git clone https://gitcode.com/gh_mirrors/sh/shellz cd shellz make创建你的第一个身份文件~/.shellz/idents/default.json三种认证方式任选其一在~/.shellz/shells/下创建目标主机 JSONidentity指向default验证配置shellz -list查看身份与 shell 列表shellz -test测试连通性并自动禁用无响应的 shell批量执行命令shellz -run uptime即可一次性在所有已启用主机上运行配好身份文件后shellz 就能在 SSH、Telnet、WinRM 和 Kubernetes 之间无缝切换——一次配置处处登录。这就是它把身份与主机解耦设计的魅力所在新增主机时你几乎只需写一个 shell JSON认证工作全部交给可复用的身份文件。【免费下载链接】shellzshellz is a small utility to manage your ssh, telnet, kubernetes, winrm, web or any custom shell in a single place.项目地址: https://gitcode.com/gh_mirrors/sh/shellz创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表