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

编写Bash脚本实现经IP1中转从IP2 SCP文件到本地

实现中转SSH+SCP自动化脚本的方案

我来帮你搞定这个自动化需求,刚好之前处理过类似的跳板机场景。根据你的描述,IP1是免密的中转节点,IP2需要密码且无法直接访问,下面给你两种可行的脚本实现方案:

方法一:用SSH ProxyJump(推荐,适用于OpenSSH 7.3+版本)

如果你的本地机器装的是比较新的OpenSSH版本(7.3及以上),ProxyJump参数可以直接帮你简化中转配置,再配合sshpass自动输入IP2的密码。

步骤1:安装sshpass(处理IP2的密码输入)

先确保本地装了sshpass,它能帮我们自动传递SSH/SCP的密码:

  • Debian/Ubuntu系:
    sudo apt update && sudo apt install sshpass -y
    
  • CentOS/RHEL系:
    sudo yum install sshpass -y  # 或者用dnf install sshpass
    

步骤2:编写自动化脚本

创建一个fetch_ip2_logs.sh脚本,内容如下:

#!/bin/bash

# 定义变量,根据你的实际情况修改
IP1="192.168.10.10"
IP2="192.168.10.9"
IP2_PASSWORD="你的IP2密码"  # 注意:明文密码有安全风险,后面会提替代方案
LOCAL_DEST="/home/localuser/Desktop/MessageFolder/"

# 先创建本地目标目录(如果不存在的话)
mkdir -p "$LOCAL_DEST"

# 通过IP1中转,从IP2拉取日志到本地
sshpass -p "$IP2_PASSWORD" scp -o ProxyJump=root@$IP1 root@$IP2:/var/log/message* "$LOCAL_DEST"

脚本说明

  • ProxyJump=root@$IP1:告诉SSH先登录到IP1,再从IP1跳转登录到IP2
  • sshpass -p "$IP2_PASSWORD":自动把IP2的密码传递给SCP,避免手动输入
  • mkdir -p:确保本地目标目录存在,不存在就创建

方法二:用ProxyCommand(兼容旧版SSH)

如果你的SSH版本不支持ProxyJump,可以用ProxyCommand来实现中转,同样配合sshpass:

修改脚本里的SCP命令部分即可:

sshpass -p "$IP2_PASSWORD" scp -o ProxyCommand="ssh root@$IP1 -W %h:%p" root@$IP2:/var/log/message* "$LOCAL_DEST"

这里的ProxyCommand是让本地先通过SSH连接到IP1,然后把IP2的连接请求转发过去。


更安全的替代方案(推荐长期使用)

上面的脚本用明文密码有安全风险,最好的方式是在IP1上配置到IP2的免密登录:

  1. 登录到IP1:ssh root@$IP1
  2. 在IP1上生成SSH密钥对(如果没有的话):ssh-keygen -t rsa(一路回车默认即可)
  3. 把IP1的公钥复制到IP2:ssh-copy-id root@$IP2(输入IP2的密码完成配置)

配置完成后,你的脚本就可以去掉sshpass部分,简化成:

#!/bin/bash

IP1="192.168.10.10"
IP2="192.168.10.9"
LOCAL_DEST="/home/localuser/Desktop/MessageFolder/"

mkdir -p "$LOCAL_DEST"

# 无需密码,直接通过中转拉取
scp -o ProxyJump=root@$IP1 root@$IP2:/var/log/message* "$LOCAL_DEST"

这样既安全又省心,避免了明文密码的风险。


最后别忘了给脚本加执行权限:

chmod +x fetch_ip2_logs.sh

运行脚本就可以自动完成整个流程啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:28:07