Comando scp sobre ssh sem senha no script

2

Aqui está o meu problema: Eu gostaria de executar o comando scp após ssh para o servidor remoto sem digitar senhas. Eu descrevo meus passos. Meus primeiros passos foram:

ssh-keygen -t rsa and

local@host$ ssh-copy-id -i /root/.ssh/id_rsa.pub remote@host on local machine

Depois fiz o mesmo na máquina remota:

ssh-keygen -t rsa and

remote@host$ ssh-copy-id -i /root/.ssh/id_rsa.pub local@host

Depois de tudo descrito acima, eu poderia fazer ssh em ambas as máquinas sem digitar nenhuma senha. Eu poderia executar o comando scp na máquina remota como scp /home/remote/info.txt.gz local@host:/root/ e tudo funcionou perfeitamente.

Then I tried to make a script with some actions described below and the last step in my script was scp command that did not work as I expected.

#!/bin/bash
remote_user=$1
remote_host=$2
local_user=$3
local_host=$4

echo "Testing connection to ${host}..."
ssh -n -o NumberOfPasswordPrompts=0 ${remote_user}@${remote_host}
if [ $? -ne 0 ]; then
    echo "FATAL: You don't have passwordless ssh working."
    echo "Try running ssh-keygen"
    exit 1
fi
echo "Okey. Starting the process."
ssh ${remote_user}@${remote_host} netstat -tulpn > /home/${remote_user}/info.txt;uptime |awk '{ print $3 }' >> /home/${remote_user}/info.txt;
if [ $? -ne 0 ]; then
    echo "An error occurred."
else
    echo "File is ready for gzipping!"
fi
gzip /home/${remote_user}/info.txt
if [ $? -ne 0 ]; then
    echo "file was not archived"
else
    echo "Archive is ready!"
fi
echo "Starting copy archive from ${remote_host} to ${local_host}"
scp /home/${remote_user}/info.txt.gz ${local_user}@${local_host}:/root/
if [ $? -ne 0 ]; then
    echo "Error while transferring!"
else
    echo "Copy has been transferred successfully!"
fi

O comando scp me pediu a senha o_O.

When I did all steps in script manually everything worked perfectly but in script scp demanded password. I read a lot through stackexchange and found this answer Using an already established SSH channel. This answer requires Open SSH but my problem can be resolved manually via SSH as I said but in script it did not work. What am I going to do to make scp works without password?

    
por fuser 30.11.2015 / 17:14

2 respostas

1

Se o comando scp abaixo estiver sendo executado em local_host , você estará tentando scp como local_user a local_host as local_user - é claro que isso solicitaria senha, já que você tinha apenas a senha menos login para remoto < - > somente usuários locais - não locais < - > local

scp /home/${remote_user}/info.txt.gz ${local_user}@${local_host}:/root/
    
por 02.12.2015 / 01:11
0

Se você já configurou as chaves ssh, procure os arquivos de transferência usando o sftp. Comando único, você não precisa usar a maneira como está tentando fazer isso, por exemplo, ssh e scp. O sftp simples funcionaria.

    
por 02.12.2015 / 01:17