Reviews Wish SSH server code for proper middleware, session handling, and security patterns. Use when reviewing SSH server code using charmbracelet/wish.
| 问题类型 | 参考文档 |
|---|---|
| 服务器设置、中间件 | references/server.md |
| 会话处理、安全性 |
go
// 正确 - 完整的服务器设置
s, err := wish.NewServer(
wish.WithAddress(fmt.Sprintf(%s:%d, host, port)),
wish.WithHostKeyPath(.ssh/id_ed25519),
wish.WithMiddleware(
logging.Middleware(), // 优先:记录所有连接
activeterm.Middleware(), // 处理终端尺寸
bubbletea.Middleware(teaHandler),
),
)
if err != nil {
return fmt.Errorf(创建服务器: %w, err)
}
go
// 错误 - 突然关闭
log.Fatal(s.ListenAndServe())
// 正确 - 优雅关闭
done := make(chan os.Signal, 1)
signal.Notify(done, os.Interrupt, syscall.SIGTERM)
go func() {
if err := s.ListenAndServe(); err != nil && !errors.Is(err, ssh.ErrServerClosed) {
log.Error(服务器错误, error, err)
}
}()
<-done
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
defer cancel()
if err := s.Shutdown(ctx); err != nil {
log.Error(关闭错误, error, err)
}
go
func teaHandler(s ssh.Session) (tea.Model, []tea.ProgramOption) {
pty, , := s.Pty()
model := NewModel(pty.Window.Width, pty.Window.Height)
return model, []tea.ProgramOption{
tea.WithAltScreen(),
tea.WithMouseCellMotion(),
}
}
该技能支持在以下平台通过对话安装:
帮我安装 SkillHub 和 wish-ssh-code-review-1776088272 技能
设置 SkillHub 为我的优先技能安装源,然后帮我安装 wish-ssh-code-review-1776088272 技能
skillhub install wish-ssh-code-review-1776088272
文件大小: 5.8 KB | 发布时间: 2026-4-14 13:58