Como criar uma chave ssh para que ela possa usar apenas o sshfs em um Synology NAS?

2

Eu tenho uma chave ssh sem uma paráfrase que permite ao usuário efetuar login em um servidor remoto.

Essa chave é usada para montar uma pasta no servidor remoto usando sshfs e fazer backup dos arquivos no meu laptop.

Gostaria que esta chave tivesse privilégios suficientes apenas para o backup. Então, como o sshfs usa o sftp, eu pensei em colocar:

command="path to sftp in the server"

no arquivo authorized_keys do servidor funcionaria.

Agora, quando eu fizer login via ssh, recebo isso:

usage: sftp [-1246Cpqrv] [-B buffer_size] [-b batchfile] [-c cipher]

   [-D sftp_server_path] [-F ssh_config] [-i identity_file] [-l limit]
   [-o ssh_option] [-P port] [-R num_requests] [-S program]
   [-s subsystem | sftp_server] host

   sftp [user@]host[:file ...]
   sftp [user@]host[:dir[/]]
   sftp -b batchfile [user@]host

Connection to "my server's name" closed.

Acho que isso significa que essa chave só pode usar o sftp, que é o que eu queria.

No entanto, quando eu uso o sshfs, recebo o seguinte:

remote host has disconnected

O servidor é um Synology NAS DS212j com DSM 4.2 e não há programa sftp-server. O que se segue é a aparência da seção do subsistema no arquivo sshd_config:

# override default of no subsystems
#Subsystem sftp /usr/libexec/sftp-server
#Subsystem sftp internal-sftp -f DAEMON -l VERBOSE -u 000

Subsystem sftp internal-sftp -f DAEMON -u 000
#Subsystem sftp /usr/syno/sbin/sftp-server -l DEBUG3

sshfs usando uma chave sem quaisquer restrições sobre os comandos funciona bem.

Por favor avise. Existem mais comandos que eu deveria incluir na variável "command" no arquivo authorized_keys?

Agradecemos antecipadamente por qualquer ajuda fornecida.

    
por mauna 06.08.2013 / 15:44

1 resposta

0

Eu não sei para o sshfs qual comando você deve autorizar mas se você quiser adicionar muitos comandos autorizados para uma chave específica você pode usar um script bash para executar a autorização:

command="/home/user/validate-rsync.sh" ssh-dss AAAAB3NzaC1yc

/home/user/validate-rsync.sh:

#!/bin/sh
case "$SSH_ORIGINAL_COMMAND" in
*\&*)
echo "Rejected"
;;
*\;*)
echo "Rejected"
;;
rsync\ --server*)
$SSH_ORIGINAL_COMMAND
;;
*)
echo "Rejected"
;;
esac

verifique se o script validate-rsync.sh é executável. Espero que possa ajudar você.

    
por 06.08.2013 / 22:25