Copiando arquivos de uma máquina para outra sem pedir senha

3

Atualmente, estou usando este comando. Eu estou em outra máquina (ip1)

scp file.txt root@ip2:/home/praveen/test.c /home/praveen

O comando solicitará a senha.

Eu o uso em alguns scripts de shell e estou chamando esses scripts de alguns arquivos crontab. Então, eu não consigo digitar a senha toda vez. Existe alguma maneira de desativar a senha ou outra maneira de inserir a senha de algum lugar, para que eu não precise digitá-la novamente?

E eu não posso usar ssh-keygen , porque eu tenho que fazer as ações para esses scripts apenas. Quando eu uso ssh-keygen , ele nunca me solicitará a senha novamente. Eu não quero isso. O resto das coisas deve funcionar como de costume.

    
por user2706152 27.08.2013 / 10:58

4 respostas

2

Não ficou claro por que você não pôde usar ssh-keygen e a troca de chaves subsequente. Eu acredito que esta é a prática recomendada.

Uma alternativa seria usar o comando expect ( man pages on-line ). Isso pode eliminar a intervenção do usuário nos processos interativos. Como o nome sugere, ele espera um prompt e responde de acordo com o especificado.

Veja essa solução de automação do SSH usando expect . Para citar algumas linhas:

# Look for passwod prompt
expect "*?assword:*"
# Send password aka $password
send -- "$password\r"

A segunda linha especifica o prompt exibido. Neste caso, pede senha. A quarta linha envia a senha para o servidor.

    
por 27.08.2013 / 11:16
1

Você pode usar o ftp, se isso for permitido no servidor remoto. Aqui está um exemplo de script de shell que usei para esse propósito

HOST='remote.server.com'
USER='domainname/usrid'   
PASSWD='p@@ssw0rd'
cd /path/to/local/directory/containing/the/file/to/be/transferred
'ftp -n $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
cd /diretory/on/remote/server
put file2transfer.dat 
bye    
quit
END_SCRIPT'
    
por 03.11.2014 / 16:59
0

Como ninguém postou uma resposta real.

Sim, conforme indicado nos comentários. Você precisa criar um par de chaves públicas / privadas.

Aqui estão 2 manuais:

Você pode utilizar ssh-agent para carregar as chaves na memória, dessa forma você não precisa inserir a senha especificada para as chaves, pois elas são armazenadas na memória para a sessão atual. Você não precisa definir uma senha em primeiro lugar, mas eu recomendaria fazer isso, já que as pessoas que possuem sua chave privada poderiam usá-la para comprometê-lo.

É claro que você pode excluir as chaves posteriormente ou excluir sua chave pública de ~/.ssh/authorized_keys no host remoto. Ele então pedirá por pw novamente.

    
por 27.08.2013 / 11:13
-1

Uma solução simples é:

echo "password" | scp -r myfile user@remotehost:/home/user/destination 
    
por 27.08.2013 / 11:15

Tags