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

PowerShell记录SSH会话的替代方案及WSL下的Unix方案咨询

SSH会话日志记录解决方案

PowerShell + Windows Terminal 方案

1. Windows Terminal 内置日志功能

新版Windows Terminal自带完整的会话日志记录能力,无需额外脚本:

  • 打开设置(快捷键Ctrl+,),找到目标终端配置(如PowerShell 7)
  • 在「高级」选项中开启「启用日志记录」,自定义日志保存路径
  • 会话中可通过快捷键Ctrl+Shift+Alt+L快速启停日志,默认日志路径为%USERPROFILE%\AppData\Local\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\Logs

2. 逐行实时记录SSH输出

针对Tee-Object无法实时显示的问题,用逐行处理逻辑替代,同时保留终端实时输出与日志保存:

# 生成带时间戳的日志文件名
$logPath = ".\ssh-session-$(Get-Date -Format 'yyyyMMdd-HHmmss').log"
# 执行SSH并逐行处理输出
ssh -tt user@remote-host 2>&1 | ForEach-Object {
    # 实时输出到终端
    Write-Host $_
    # 追加写入日志文件
    $_ | Out-File -Path $logPath -Append -Encoding utf8
}

-tt参数强制SSH分配伪终端,避免远程命令无响应;2>&1将错误输出合并到标准输出,确保日志完整性。

WSL/Unix 方案

1. script命令(推荐)

Unix/Linux下原生的终端会话记录工具,能完整保存所有交互内容:

# 启动会话记录,日志保存到ssh-session.log
script ssh-session.log
# 在新shell中执行SSH连接
ssh user@remote-host
# 退出SSH后输入exit,日志自动保存
  • 记录时间戳用于回放:script -t 2>timing.log ssh-session.log,之后用scriptreplay timing.log ssh-session.log还原会话
  • 直接指定SSH命令:script -c 'ssh user@remote-host' ssh-session.log,无需手动启动shell

2. SSH命令+tee实时记录

Unix下tee默认采用行缓冲,可实时显示并保存输出:

ssh user@remote-host 2>&1 | tee ssh-session.log

需要调试信息时,添加-v参数:

ssh -v user@remote-host 2>&1 | tee ssh-debug.log

3. tmux/screen会话日志

如果使用终端复用工具,可直接开启内置日志:

  • tmux:会话中按Ctrl+b :,输入set-option -g log-file tmux-ssh.log指定路径,再输入start-logging开始记录
  • screen:启动时加-L参数自动记录日志,或会话中按Ctrl+a H手动启停,日志默认保存为screenlog.0

内容的提问来源于stack exchange,提问作者Jânia Gentil

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 06:32:33