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

如何复用SSH_AUTH_SOCK单连接执行远程命令,避免重复输入动态令牌

复用SSH连接避免重复输入动态令牌的方案

SSH原生ControlMaster方案(推荐)

这是SSH内置的连接复用功能,无需额外工具,配置后自动生效:

  • 先创建socket存储目录(如果不存在):
    mkdir -p ~/.ssh/sockets
    
  • 编辑本地~/.ssh/config,添加workserver1的配置段:
    Host workserver1.com
      HostName workserver1.com
      ControlMaster auto
      ControlPath ~/.ssh/sockets/%r@%h-%p.sock
      ControlPersist 1h
    
    参数说明:
    • ControlMaster auto:自动检测并复用已有的控制连接,无则创建新连接
    • ControlPath:指定连接socket的存储路径,%r为远程用户名、%h为主机名、%p为端口,确保每个连接的socket唯一
    • ControlPersist 1h:主连接在最后一次复用操作后保持1小时,超时自动关闭(可改为forever永久保持,或30m等自定义时长)
  • 使用步骤:
    1. 首次执行ssh workserver1.com,输入一次动态令牌完成登录,此时会生成对应的控制socket
    2. 后续无论是新开终端交互式登录,还是执行远程命令(如ssh workserver1.com 'top'、scp file.txt workserver1.com:/tmp/),都会自动复用已有连接,无需重复输入令牌
    3. 主动关闭主连接:执行ssh -O exit workserver1.com

Socat手动复用方案(备选)

如果不想修改SSH配置,可通过socat手动绑定本地socket实现复用:

  • 第一步建立持久SSH连接并绑定socket:
    socat UNIX-LISTEN:/tmp/ssh-workserver.sock,fork EXEC:"ssh workserver1.com -tt",pty,stderr
    
    命令说明:
    • UNIX-LISTEN:/tmp/ssh-workserver.sock,fork:在本地创建UNIX socket,fork参数允许同时处理多个复用连接
    • EXEC:"ssh workserver1.com -tt":启动SSH连接,-tt强制分配伪终端,支持交互式操作和命令执行
  • 后续复用连接时,通过socat连接本地socket:
    socat UNIX-CONNECT:/tmp/ssh-workserver.sock STDIO
    
  • 注意:需保持第一个socat进程运行,关闭该进程会断开所有复用的连接

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 05:55:30