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

如何通过SSH隧道复用认证实现向同一远程机器的SCP传输(避免重复获取OISPP令牌)

如何通过SSH隧道复用认证实现向同一远程机器的SCP传输(避免重复获取OISPP令牌)

我太懂你这种痛苦了——每次用SCP都得重新申请OISPP令牌,不仅步骤繁琐还容易输错,连自动化工具都没法用。你想靠SSH隧道复用认证的思路完全没问题,只是可能端口转发的配置没到位。下面我给你一步步拆解正确的操作方法:

一、先建立持久化的SSH端口转发隧道

你需要先通过OISPP令牌建立一个后台运行的SSH连接,同时把本地的某个端口(比如选9999,只要本地没被占用就行)映射到中转机上的localhost:22——也就是你平时第二次SSH登录的目标机器端口。

执行这个命令:

ssh -L 9999:localhost:22 -N -f "vaultaddress=someip@token=blabla@pam-xxx@blabla@remote_ip@someip3"

给你解释下每个参数的作用:

  • -L 9999:localhost:22:把本地的9999端口,通过当前SSH连接转发到中转机的localhost:22端口(也就是你最终要操作的目标机器)
  • -N:告诉SSH不要执行远程命令,只做端口转发,避免进入中转机的shell
  • -f:让SSH连接在后台运行,这样你还能继续用当前终端做其他操作

执行完这个命令后,你的本地9999端口就和目标机器的22端口打通了,而且这个连接会保持住(只要你不主动关闭或者网络断了)。

二、用本地端口直接做SCP传输

现在你就可以直接通过本地的9999端口,用useful-user身份做SCP传输了,完全不用再重新申请令牌:

从本地传文件到远程目标机器

scp -P 9999 /本地文件路径/your-file.txt useful-user@localhost:/远程目标路径/

从远程目标机器拉文件到本地

scp -P 9999 useful-user@localhost:/远程文件路径/remote-file.txt /本地保存路径/

注意这里SCP要用-P参数指定端口(大写P,和SSH的小写p不一样,别搞混了)。

三、进阶:用SSH配置文件简化操作

如果经常需要这么操作,你可以把隧道配置写到SSH的配置文件里,下次启动隧道只要敲个简单的命令就行:

  1. 打开(如果没有就创建)~/.ssh/config文件,添加以下内容:
Host oispp-target-tunnel
    HostName vaultaddress=someip@token=blabla@pam-xxx@blabla@remote_ip@someip3
    LocalForward 9999 localhost:22
    NoCommand true  # 只做端口转发,不执行远程命令
    ControlMaster auto
    ControlPath ~/.ssh/ctrl-%h-%p-%r
    ControlPersist 1h  # 让连接在后台保持1小时,超时自动关闭
  1. 保存文件后,启动隧道只需要执行:
ssh oispp-target-tunnel

之后的SCP操作还是和之前一样用-P 9999就行,而且这个隧道会自动保持1小时,期间不用重新申请令牌。

四、注意事项

  • 端口冲突:如果本地9999端口被占用了,换个其他没被用的端口(比如9998、10000都可以),命令里的端口号统一改就行
  • 关闭隧道:如果要手动关闭后台的SSH隧道,可以用ps aux | grep ssh找到对应的进程,然后用kill 进程号关闭;或者用ssh -O exit oispp-target-tunnel(如果用了配置文件的话)
  • 令牌过期:这个方法只是复用当前令牌的认证会话,如果令牌本身过期了,还是得重新申请新的令牌再建隧道

备注:内容来源于stack exchange,提问作者ABu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 09:38:14