Eu tenho um arquivo no servidor A (que está por trás de um NAT, portanto, não diretamente endereçável). O arquivo precisa ser copiado para o servidor B em um diretório restrito à raiz. Eu tenho uma conta no servidor B com privilégios sudo. Qual é a sintaxe do comando scp?
command-line
security
sudo
scp
Neil
fonte
fonte
Respostas:
Primeiro, você precisa copiar o arquivo para um lugar onde você tenha acesso de gravação sem sudo,
Em seguida, mova o arquivo usando o sudo
Se você não tiver um local gravável, crie um diretório temporário com permissão de gravação para seu usuário.
fonte
chmod 777
é geralmente o caminho errado para fazê-lo. Considere o que poderia acontecer se alguém estivesse logado e soubesse que você estava prestes a executar este código.ssh sudo
não funciona para mim - reclama "não tty presente e nenhum programa askpass especificado"?Com o SCP, você tem que fazer em duas etapas, no entanto, você pode fazê-lo em um com o rsync da seguinte maneira:
Nota: Isso requer
NOPASSWD
configuração do sudo. Se você tiver que digitar a senha para o sudo, então o caminho de dois passos é necessário.Para copiar o diretório, você precisa adicionar
-r
parâmetro. E-v
para saída detalhada.Para usar o método acima com credenciais, você precisa adicioná-las ao seu
~/.ssh/config
arquivo, por exemplofonte
sudo: sorry, you must have a tty to run sudo
fixado por-e "ssh -tt"
.-e "ssh -tt"
, Eu receboprotocol version mismatch -- is your shell clean?
. Alguma dica de como consertar isso?Você pode usar ssh e tar para contornar isso:
Isso primeiro atualiza seu timestamp sudo (pedindo uma senha, se necessário, que requer um tty (
ssh -t
)) e, em seguida, usa o sudo para criar um tarball remotamente e extraí-lo localmente."tar" no RedHat 5 requer as opções "--preserve" após o comando "xpsf -".
fonte
tar: Invalid replacement string
, removendo-s
na parece corrigi-lo (não tem certeza do que você precisa dos
de qualquer maneira). Muito Obrigado; isso é incrível.tty_tickets
ser desativado, correto?Você pode usar o comando sftp com sudo, por exemplo:
fonte
Se você precisar digitar a senha para o sudo todas as vezes, você pode salvá-lo em um arquivo:
e depois enviá-lo junto com o arquivo de origem.
Você pode usar
tee
ao invés desponge
se você não tiver mais créditos.fonte
Ele irá copiar um arquivo específico da fonte para / tmp / no servidor atual
fonte