O comando sftp suporta uma opção de subsistema (-s) que permite ao usuário remoto selecionar o executável sftp-server remoto e, opcionalmente, atualizar para o sudo no processo como esse;
sftp -s "/usr/bin/sudo /usr/libexec/openssh/sftp-server" xxx.yyy.zzz.aaa
Este comando adia as opções do cliente ssh em ~ / .ssh / config, permitindo o uso transparente de pubkey e porta personalizada e configurações do usuário.
No entanto, subsystem
parece ser específico do sftp e, portanto, não está definido no arquivo de configuração e parece que deve ser definido como uma opção de linha de comando para o sftp.
No entanto, algumas ferramentas envolvem a chamada sftp, tornando impossível a opção de subsistema e, portanto, bloqueando o acesso do usuário.
Existe algum arquivo de opção de configuração que eu possa usar para definir isso para o openssh sftp em geral?
existe algum arquivo de configuração para afetar a maneira como o gnome nautilus chama o sftp para sua integração com o gerenciador de arquivos?
Atualize a possível solução hacky-porém-funcional é ...
Portanto, verifica-se que não há um arquivo de configuração óbvio que o sftp usará para opções, então acabei modificando um script de wrapper genérico para adicionar a opção explicitamente aos meus hosts selecionados, colocando isso no meu caminho;
#!/bin/bash
# Generic shell wrapper that performs an operation
OPERATION=/usr/bin/sftp
args=("$@")
#the final arg should contain a hostname of the form [user@]host[:path]
case "${args[@]: -1}" in
myserver.com)
exec $OPERATION -s "/usr/bin/sudo /usr/libexec/openssh/sftp-server" "$args"
;;
*)
exec $OPERATION "$args"
;;
esac
No entanto, dependendo do seu arquivo sudoers, geralmente para executar o sudo requer um tty, então você deve passar a opção "-t" para o ssh e adivinhe? não há opção de configuração para o comando do cliente ssh documentado que funciona nos arquivos ssh_config ou ~ / .ssh / config. haha
Então, escrevo outro script wrapper para fornecer isso ...
#!/bin/bash
# Generic shell wrapper that performs an operation
OPERATION=/usr/bin/ssh
args=("$@")
#locating the hostname is not so simple with ssh
exec $OPERATION -tt "$args"
no entanto, agora estou tendo problemas para fazer com que o sftp use meu arquivo wrapper ~ / bin / ssh, pois ele parece estar codificado no sftp e controlado por uma opção "-S"