gpt4 book ai didi

shell - 如何在 shell 脚本中从远程服务器复制文件?

转载 作者:行者123 更新时间:2023-12-02 13:59:23 25 4
gpt4 key购买 nike

我需要编写脚本以在服务器后端自动将远程服务器文件复制到此处。如下所示:

#!/usr/bin/expect -f   
spawn /usr/local/bin/scpdata.sh
set timeout 3000
expect "root@172.100.100.143's password:"
set timeout 3000
send "xxxx"
set timeout 3000
send "exit\r"
expect eof

scpdata.sh 文件
#!/bin/bash
scp test@172.100.100.143:/tmp/11-03-15_03:00:01.tar.gz /tmp

但这不起作用,问题出在哪里以及如何解决?请帮忙

最佳答案

我建议您改用公钥身份验证(在客户端上使用 ssh-keygen 生成公钥/私钥对,将公钥(默认为 .ssh/id.pub)添加到服务器上的 .ssh/authorized_keys 中——参见手册页)。比你可以:

  • 使用 ssh-agent 提前提供 key 的密码。 , 或
  • 使用没有密码的 key 。

  • 在后一种情况下,我建议您将 key 限制为特定命令。我不确定如何为 scp 设置命令,但是
    ssh test@172.100.100.143 'cat /tmp/11-03-15_03:00:01.tar.gz' > /tmp/11-03-15_03:00:01.tar.gz

    是等价的。你只需写 command="命令 "在你的 key 前面 .ssh/authorized_keys .与 ssh 服务器相比,当使用此 key 授权时,无论 ssh 命令行上给出什么,都将始终运行指定的命令。这限制了攻击者在访问您的无密码 key 时可能造成的损害。

    如果您需要更改文件名,则需要在服务器端编写一个脚本,该脚本将提取 $SSH_ORIGINAL_COMMAND 的名称(这就是服务器端脚本获取 ssh 命令行中给出的任何内容的地方),检查它是否是允许的文件之一并将其分类。

    关于shell - 如何在 shell 脚本中从远程服务器复制文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5388473/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com