从服务器安全地复制文件,用密码安装sudo?

时间:2014-10-14 17:43:21

标签: bash

在bash脚本中我需要从远程服务器复制/ etc / passwd,但sshd服务不允许root登录(因为它是默认值,所以不出意外)。

所以通常我会使用类似sshpass'passwd'scp user @ server:/ etc / passwd / local / system来获取脚本进行登录和复制,但是由于用户不能是root用户,我不确定这该怎么做。我有SUDO访问权限但是在发布时需要登录密码吗?

有人这样做过吗?基本上登录cat或用sudo复制passwd文件要求输入密码?

1 个答案:

答案 0 :(得分:0)

支持功能:

    pipewrap(){
        echo $1  # which is password
        local lockFile=$2;
        while true; do
            # The function will exit when output pipe is closed, 
            if [ ! -e $lockFile ]; then
                return 0
            fi
            # i.e., the ssh
            read -t 1 line
            if [ $? -eq 0 ]; then 
                # successfully read
                echo $line
            fi
        done
    }

运行ssh + sudo命令功能:

    run_ssh_sudo () {
        local REMOTECOMPUTER=$1;
        local PASSWORD=$2;
        local REMOTECOMMAND=$3;
        local ARGUMENTS=$4;
        local REMOTEUSER=$5;

        sshpass -p "$PASSWORD" "${SSH_COMMAND}" "$REMOTEUSER@$REMOTECOMPUTER" "sudo -K"

        local lockFile=`mktemp`
        eval pipewrap '$PASSWORD' '$lockFile' | (sshpass -p "$PASSWORD" "${SSH_COMMAND}" "$REMOTEUSER@$REMOTECOMPUTER" "sudo -S '$REMOTECOMMAND' $ARGUMENTS"; rm "$lockFile")

    }