将gzip发送到另一台使用OnKeyboard与节点ssh交互的服务器

将gzip发送到另一台使用OnKeyboard与节点ssh交互的服务器,ssh,Ssh,我正在使用node ssh(在firebase云函数中)在一台服务器上创建文件夹的存档,我想将此存档发送到另一台使用键盘交互身份验证的服务器,但我不知道如何管理它 我尝试的内容: 使用SSHscp这样的命令:scp-r my_backup.gzusername@server-2.com:/backups test/连接到第一台服务器时 =>但是我猜(并希望)第二台服务器需要它的密码来接受操作,我不知道如何像第一台服务器使用节点ssh(使用tryKeyboard和onKeyboardIntera

我正在使用node ssh(在firebase云函数中)在一台服务器上创建文件夹的存档,我想将此存档发送到另一台使用键盘交互身份验证的服务器,但我不知道如何管理它

我尝试的内容:

  • 使用SSHscp这样的命令:
    scp-r my_backup.gzusername@server-2.com:/backups test/
    连接到第一台服务器时
    =>但是我猜(并希望)第二台服务器需要它的密码来接受操作,我不知道如何像第一台服务器使用节点ssh(使用tryKeyboard和onKeyboardInteractive)那样轻松地管理它

  • 使用async/await首先连接到第一台服务器,然后将存档发送到第二台服务器,但第二台服务器连接的
    then()
    中引用的所有内容都属于第二台服务器,因此我无法要求将存档从第一台服务器传输到第二台服务器

我的代码
在实现与第二台服务器的连接之前:

var password = '***'
ssh.connect({
    host: '***',
    username: '***',
    port: 22,
    password,
    tryKeyboard: true,
    onKeyboardInteractive: (name, instructions, instructionsLang, prompts, finish) => {
        if (prompts.length > 0 && prompts[0].prompt.toLowerCase().includes('password')) {
            finish([password])
        }
    }
}).then((value) => {
    await ssh.execCommand('touch my_backup.gz', {
        cwd: '/home/directoryName'
    }).then((result) => {
        console.log('TOUCH OK');
        if (result.stderr != '') console.log('TOUCH STDERR: ' + result.stderr);
    }).catch((error) => {
        ssh.dispose();
        return response.status(401).send('error : ' + error);
    });

    await ssh.execCommand('tar --exclude=my_backup.gz -zcvf my_backup.gz .', {
        cwd: '/home/directoryName'
    }).then((result) => {
        console.log('ARCHIVE CREATED !');
        if (result.stderr != '') console.log('STDERR: ' + result.stderr);
    }).catch((error) => {
        ssh.dispose();
        return response.status(401).send('error : ' + error);
    });


    ssh.dispose();
    return response.status(200).send('ARCHIVE CREATED');

}).catch((error) => {
    ssh.dispose();
    return response.status(401).send('connection error : ' + error);
});

谢谢

我最终通过wget使用FTP协议,简化了过程