Alterando usuário enquanto scp

11

Eu preciso copiar o arquivo entre as máquinas Linux. O problema que o usuário que utilizo para login ( myuser ), é diferente do usuário que pode acessar o arquivo.

Se eu apenas ssh para a máquina, posso alternar o usuário usando sudo su someuser , posso fazer isso de alguma forma enquanto scp ?

Enquanto usava o WinSCP, eu consegui fazê-lo, configurando o SCP / Shell, então acredito que deve haver uma maneira similar de fazê-lo via shell puro.

    
por Tarlog 25.02.2013 / 10:53

5 respostas

7

Assumindo que o usuário que você PODE usar ssh não precisa de uma senha para sudo su no usuário de destino, você pode tentar isto:

dd if=myfile | ssh some.host "sudo -u targetuser dd of=myfile" 

... Ainda não estou convencido de que simplesmente configurar targetuser para permitir somente scp / sftp / rsync por SSH e usar um par de chaves RSA para autenticação não seja uma opção muito melhor.

    
por 25.02.2013 / 11:41
2

Se você souber as credenciais do outro usuário ( someuser ), basta especificá-lo na sua chamada scp .

Da página man scp :

File names may contain a user and host specification to indicate that the file is to be copied to/from that host. Local file names can be made explicit using absolute or relative pathnames to avoid scp treating file names containing ‘:’ as host specifiers. Copies between two remote hosts are also permitted.

Aqui está a sintaxe usada:

[[user@]host:]/path/to/file

Exemplo

Você deseja copiar o arquivo /home/foo/bar de host1 para seu localhost, usando o usuário someuser , aqui está o comando:

scp someuser@host1:/home/foo/bar .

Você será solicitado para autenticação (senha, chaves, ...).

    
por 25.02.2013 / 11:25
1

Provavelmente é possível , mas eu diria que é uma maneira muito estranha de fazer isso.

Minha primeira sugestão é fazer login como esse usuário. Mesmo se você não tiver a senha do usuário, você pode adicionar sua própria chave ssh pública às suas authorized_keys e então scp usando sua chave, como mostra o rahmu.

Se isso não for possível, minha segunda sugestão é fazer o login por ssh, sudo para o usuário e criar um tarfile dos arquivos que você deseja copiar e colocá-lo em algum lugar que seu próprio usuário possa ler. Então desça esse tarfile.

    
por 25.02.2013 / 11:26
1

use -S no comando scp

por exemplo. link

ele permitirá que você execute um script, da mesma forma que acredito estar fazendo com o caso de uso winscp.

    
por 25.02.2013 / 11:27
0

Eu tentei dar alguns exemplos no artigo a seguir. Idéia básica não é usar scp, mas use dd e ssh com sudo user switch. Olhe:

link

    
por 05.07.2014 / 09:11

Tags