Gostaria de fazer uma conta ssh capaz de fazer duas coisas:
- montagem (pode ser um) diretório via
sshfs
- realizando backup e recuperação de seus diretórios desejados usando
rsync
Adoraria utilizar ssh
para rsync
purpose sem executar% extrarsync
server. (A questão principal é a disponibilidade de uma porta apenas para ssh
. Se não for possível ou simplificar muito as coisas, eu posso considerar sshfs
tunneling).
Pergunta: até o momento alcancei apenas sftp
de contas. No entanto, eles não têm rsync
over ssh
, o que eu gostaria de adicionar.
TL; DR: até o momento, tentei entrar na abordagem de conta "somente ftp" com a abordagem "wrapper de comandos permitidos" via script personalizado apontado por ForceCommand
option - esses detalhes são descritos abaixo.
Como alcancei a conta sftp
apenas até agora
Até o momento, tive sucesso com a configuração da conta ssh
a ser limitada a sftp
após o tutorial: link
Em resumo, isso foi conseguido principalmente seguindo sshd_config
change:
Subsystem sftp internal-sftp
Match group sftponly
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
E fazendo a conta pertencer apenas a sftponly
group:
username=LIMITED_USER
sudo useradd -d /home/${username} -s /usr/lib/sftp-server -M -N -g sftponly ${username}
sudo passwd ${username}
sudo mkdir -p /home/${username}/uploads /home/${username}/.ssh
sudo chown ${username}:sftponly /home/${username}/uploads /home/${username}/.ssh
sudo chmod 700 /home/${username}/.ssh
Adicionada /usr/lib/sftp-server
a /etc/shells
.
Como os usuários têm diretórios pessoais criptografados no estilo do Ubuntu Server, eu tenho suas chaves autorizadas em locais diferentes (via /etc/ssh/sshd_config
, AuthorizedKeysFile /etc/ssh/users_configs/%u/authorized_keys
):
sudo mkdir /etc/ssh/users_configs/${username}
cd /etc/ssh/users_configs/${username}
sudo vim /etc/ssh/users_configs/${username}/authorized_keys
# Here copy desired signature for the purpose from the client
sudo chmod 700 /etc/ssh/users_configs/${username}/authorized_keys
sudo chown ${username}:sftponly /etc/ssh/users_configs/${username}/authorized_keys
Problemas com rsync
e até agora tenta com "ForceCommand"
Enquanto a montagem via sshfs
funciona bem,
Eu me deparei com o seguinte problema:
como permitir que o usuário também rsync
?
Eu tentei eliminar ChrootDirectory
e alterar ForceCommand
para algum tipo de "filtro de comando" (ou seja, permitindo apenas um subconjunto de comandos), como em: link :
$ grep -B 1 ForceCommand /etc/ssh/sshd_config
Match group sftponly
ForceCommand /etc/ssh/wrapper.sh
$ sudo cat /etc/ssh/wrapper.sh
#!/bin/sh
(
echo -n '# '
date
echo $SSH_ORIGINAL_COMMAND
) >> /home/"${USER}"/.ssh_commands_history
case "$SSH_ORIGINAL_COMMAND" in
"allowed_command")
eval $SSH_ORIGINAL_COMMAND
;;
*)
echo ERROR;
exit 1
;;
esac
$ sudo touch /home/LIMITED_USER/.ssh_commands_history
$ sudo chown LIMITED_USER:sftponly /home/LIMITED_USER/.ssh_commands_history
$ sudo chmod 0700 /home/LIMITED_USER/.ssh_commands_history
mas afinal não sai. (Eu executo ssh u@srv ps
e fica preso em vez de retornar a saída de ps como no exemplo mencionado. sshd -ddd
nor ssh -v
parece útil aqui).
Portanto:
Gostaria de criar contas que serão usadas para sshfs
e rsyncing
. Como fazê-los funcionar e limitados para aumentar a segurança?