Como transferir um ficheiro com o sftp no UNIX

Quero transferir um .ficheiro png de uma pasta no meu computador para uma pasta num servidor remoto.

Tenho de usar o SFTP para proteger o ficheiro e o modo de transferência. E eu já tenho um script UNIX (.ksh) ficheiro para copiar os ficheiros no modo normal. Como faço para implementar a transferência no modo SFTP?

 5
Author: Eric Leschinski, 2013-04-04

2 answers

Use sftp em vez de qualquer comando que esteja a usar no seu .programa do ksh . Ver sftp man para referência.

Você também pode querer olhar para scp cópia segura - scp man .

Editar

sftp é principalmente para operações interactivas, você precisa de indicar a máquina a que deseja ligar-se:

sftp example.com

Ser-lhe-á pedido o nome de utilizador e o passsword, e a sessão interactiva começará..

Embora possa ser utilizado em scripts, o scp é muito mais fácil de usar:

scp /path/to/localfile user@host:/path/to/dest

Ser-lhe-á pedida a senha..

Editar 2

Ambos scp e sftp usam {[10] } como protocolo subjacente, ver isto e isto

A melhor maneira de Os configurar a correr dos programas é configurar a autenticação sem senhas usando chaves . Veja isto eisto . Uso isto extensivamente nos meus servidores.. Depois de configurar as chaves, você pode executar

scp -i private-key-file /path/to/local/file user@host:/path/to/remote

sftp -oIdentityFile=private-key-file -b batch-file user@host

Se se quiser autenticar-se com a senha, pode tentar o pacote expect. O script mais simples pode ser assim:

#!/usr/bin/expect
spawn sftp -b batch-file user@host
expect "*?assword:*"
send "pasword\n"
interact

Ver isto, isto e isto para mais informações.

 11
Author: Shimon Rachlenko, 2017-04-13 12:13:48

Enviar comandos através do sftp numa linha:

Criar um ficheiro e gravá-lo como um ficheiro 'my_batch_ file':

cd /root
get blah.txt
bye

Execute isto para executar o seu ficheiro em lote:

eric@dev /home/el $ sftp [email protected] < my_batch_file
Connecting to 10.30.25.15...
Password:
sftp> cd /root
sftp> get blah.txt
Fetching /root/blah.txt to blah.txt
sftp> bye

O ficheiro é transferido

Que moveu o blah.txt de computador remoto para computador local.

Se não quiser indicar uma senha, faça isto.:

Como executar o comando sftp com uma senha do programa Bash?

Ou se quiseres para o fazer de forma insegura, use bash e espere:

#!/bin/bash
expect -c "
spawn sftp username@your_host
expect \"Password\"
send \"your_password_here\r\"
interact "

Poderá ter de instalar o expect, alterar o texto de 'Password' para minúsculas 'p' para corresponder ao que a sua mensagem recebe. O problema aqui é que ele expõe sua senha em texto simples no arquivo, bem como no histórico de comandos. O que quase invalida o propósito de ter uma senha em primeiro lugar.

 1
Author: Eric Leschinski, 2017-05-23 12:26:18