O comando sftp suporta uma opção de subsistema (-s) que permite ao usuário remoto selecionar o executável do sftp-server remoto e, opcionalmente, atualizar para o sudo no processo da seguinte forma:
sftp -s "/usr/bin/sudo /usr/libexec/openssh/sftp-server" xxx.yyy.zzz.aaa
Este comando adia para as opções do cliente ssh em ~ / .ssh / config, permitindo o uso transparente de pubkey e configurações personalizadas de porta e usuário.
No entanto, subsystem
parece ser específico do sftp e, portanto, não é definido no arquivo de configuração e parece que ele deve ser definido como uma opção de linha de comando para o sftp.
No entanto, algumas ferramentas envolvem a invocação do sftp para que seja impossível definir a opção do subsistema e, portanto, ficar com 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 efetuar a maneira como o gnome nautilus invoca o sftp para sua integração com o gerenciador de arquivos?
Atualizar possível solução de hacky mas funcional é ...
Então acontece que não há nenhum arquivo de configuração óbvio que o sftp usará para opções, então acabei modificando um script wrapper genérico para adicionar a opção explicitamente para 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 rodar sudo requer um tty, então você tem que passar a opção "-t" para ssh, e adivinhe? não há nenhuma opção de configuração para o comando do cliente ssh documentado que funciona nos arquivos ssh_config ou ~ / .ssh / config. haha.
Então eu 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"
embora, agora eu esteja tendo problemas para fazer o sftp usar meu arquivo wrapper ~ / bin / ssh, já que ele parece ser codificado em sftp e controlado por uma opção "-S"