I am trying to use scp in a bash script run by cron (I am running this on Ubuntu 10.0.4 LTS).
The script works fine (i.e. transfers and copies file1 and file2 to/from the remote server, when I run it from the command line. However, when I run the script as a cron job, it fails.
Th is is what the script looks like:
#!/bin/bash cd /home/oompah/scripts/tests/ scp -P 12345 file1 email@example.com:~/uploads if scp -P 12345 firstname.lastname@example.org:/path/to/file2.dat local.dat >&/dev/null ; then echo "INFO: transfer OK" ; else echo "ERROR: transfer failed" ; fi
The error message I get (redirected to a log file) when I run it as a cron job is:
ERROR: transfer failed
The error message I get sent to my mail inbox is:
Permission denied (publickey). lost connection
Why is happening, and how may I fix it?.
I modified the 1st scp command with an -i command (as suggested by M Jenkins), i also added -v for debug messages. Here is the full debug message log. Hopefully, it can shed some light as to what is going on:
Executing: program /usr/bin/ssh host 188.8.131.52, user oompah, command scp -v -t ~/uploads OpenSSH_5.3p1 Debian-3ubuntu6, OpenSSL 0.9.8k 25 Mar 2009 debug1: Reading configuration data /etc/ssh/ssh_config debug1: Applying options for * debug1: Connecting to 184.108.40.206 [220.127.116.11] port 12345. debug1: Connection established. debug1: identity file /home/oompah/.ssh/id_rsa type 1 debug1: Checking blacklist file /usr/share/ssh/blacklist.RSA-2048 debug1: Checking blacklist file /etc/ssh/blacklist.RSA-2048 debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3p1 Debian-3ubuntu3 debug1: match: OpenSSH_5.3p1 Debian-3ubuntu3 pat OpenSSH* debug1: Enabling compatibility mode for protocol 2.0 debug1: Local version string SSH-2.0-OpenSSH_5.3p1 Debian-3ubuntu6 debug1: SSH2_MSG_KEXINIT sent debug1: SSH2_MSG_KEXINIT received debug1: kex: server->client aes128-ctr hmac-md5 none debug1: kex: client->server aes128-ctr hmac-md5 none debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP debug1: SSH2_MSG_KEX_DH_GEX_INIT sent debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY debug1: Host '[18.104.22.168]:12345' is known and matches the RSA host key. debug1: Found key in /home/oompah/.ssh/known_hosts:3 debug1: ssh_rsa_verify: signature correct debug1: SSH2_MSG_NEWKEYS sent debug1: expecting SSH2_MSG_NEWKEYS debug1: SSH2_MSG_NEWKEYS received debug1: SSH2_MSG_SERVICE_REQUEST sent debug1: SSH2_MSG_SERVICE_ACCEPT received debug1: Authentications that can continue: publickey debug1: Next authentication method: publickey debug1: Offering public key: /home/oompah/.ssh/id_rsa debug1: Server accepts key: pkalg ssh-rsa blen 277 debug1: PEM_read_PrivateKey failed debug1: read PEM private key done: type <unknown> debug1: read_passphrase: can't open /dev/tty: No such device or address debug1: No more authentication methods to try. Permission denied (publickey). lost connection Permission denied (publickey).