Estou muito atrasado para isso, mas você pode usar as chaves ssh e especificar o comando exato permitido no arquivo ~ / .ssh / authorized_keys, por exemplo.
no-port-forwarding,no-pty,command="scp source target" ssh-dss ...
Você pode precisar usar ps no alvo para definir as configurações de comando corretas.
PS: Se você executar um comando scp de teste com "-v", poderá ver algo assim
debug1: Sending command: scp -v -t myfile.txt
Você notará que "-t" é uma opção scp não documentada, usada pelo programa no outro extremo. Isso dá a idéia do que você precisa colocar em authorized_keys.
EDITAR:
Você pode encontrar mais informações (com vários links) em essa pergunta do StackOverflow .
Aqui está um exemplo prático disso, para um usuário chamado backup_user
no lado do servidor.
~backup_user/.ssh/authorized_keys
content no lado do servidor (com mais algumas restrições de segurança):
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="scp -v -r -d -t ~/CONTENT" ssh-rsa AAAAMYRSAKEY...
Crie um link em ~ backup_user / que vincula ao diretório em que o conteúdo deve estar acessível.
$ ln -s /path/to/directory/with/accessible/content ~backup_user/CONTENT
Agora, do lado do cliente, o seguinte comando deve funcionar:
scp -v -r -P 2222 -i .ssh/id_rsa_key_file path/to/data backup_user@SERVER:~/CONTENT
O que este comando faz:
- Ele exibe informações detalhadas ( opçãonal : você pode remover o
-v
do arquivo command e authorized_keys)
- Recursivamente copia o conteúdo do caminho / para / data. ( optionnal : você pode remover
-r
do arquivo command e authorized_keys se não quiser fazer uma cópia recursiva)
- Ele usa a porta 2222 para se conectar ao servidor ( optionnal : você pode remover
-P 2222
do comando)
- Ele usa um arquivo de identidade para automatizar a conexão ( optionnal : você pode remover
-i .ssh/id_rsa_key_file
- O conteúdo de
path/to/data
será copiado para /path/to/directory/with/accessible/content/
Para fazer uma cópia de um arquivo (ou vários) do servidor para o cliente, você deve criar um script de shell que lide com este como descrito aqui