I wrote a script which downloads via scp and installs some packages. SSH keys are added to host and when I run

[root@HostB ~]# ./myscript

everything is ok and packages are downloaded via scp without asking for password.

I need to run this script via ssh but when I try

[root@HostA ~]# ssh root@HostB "./myscript"

I get Permission denied (publickey,password) error.

When I'm trying to use ssh -t I get a password enquiry in place when scp command in myscript is executing.

  • 2
    from HostA, can you ssh root@HostB ? – glenn jackman Nov 3 '14 at 20:18
  • do you have an SSH agent running on HostA? – damienfrancois Nov 3 '14 at 20:24
  • @glenn jackman: sure, there is also key added. Problem with permissions is during executing scp in script running on host B. – nars Nov 3 '14 at 20:34
  • Do you get the same results if you use the full path to the script? – Centimane May 12 '16 at 10:29
  • Your question is unclear. Your problem has nothing to do with myscript. What you actually need to figure out is why your scp commands complete without a password prompt when you run them locally, but ask for a password when you're running remotely. My guess is you're relying on an SSH agent for keys that is not being forwarded in the remote script execution case. – marcan May 12 '16 at 11:36

Answer= Add "bash"

How to SSH into a Computer and Execute a Script from Jenkinsfile: The file is called "Shell Script.sh" in directory "/home/username/Shell Script Directory"

From Jenkinsfile:

sh "sudo ssh -i /home/user/myPemFile.pem -o StrictHostKeyChecking=no -n username@ \"bash /home/username/Shell\\ Script\\ Directory/Shell\\ Script.sh\" "
|improve this answer|||||

My guess would be because you don't have PasswordAuthentication set to yes.

PasswordAuthentication yes

Add this to the sshd_config on the machines and try again. This should prompt for password.

Another solution would be to take the contents of ~/.ssh/id_rsa.pub on HostA and add it to the file ~/.ssh/authorized_keys on the HostB

Now that you have password authentication enabled, you can install the authorized keys with this command:

ssh-copy-id HostB
|improve this answer|||||

You mention that you're using scp inside your script to download packages. Your problem is with that bit. The issue is that, when you run ssh in this form:

ssh user@host command

... there is no pseudo terminal allocated to the script that is running. scp tries to prompt for a password, but it needs a pseudo terminal for that, so without one, you get the permission denied error (which is coming from a failed password authentication attempt). If you use ssh -t, then there is a pseudo terminal, and the password prompt works. What you need to figure out is why scp is prompting for a password when run remotely, but not when run from an interactive ssh session. That's a different question.

|improve this answer|||||

Permission denied (publickey,password) error

Its got nothing to do with the permissions on the script. You are failing to establish an ssh connection. Try just getting a shell on the remote system first.

ssh -vv root@HostB

BTW it's generally not a good idea to allow direct access to the root account via ssh - and the error you have shown is what one would expect if the sshd is configured with PermitRootLogin=No. The right way to solve this is to provision an acocunt with appropriate sudo privileges and use that to run the command.

|improve this answer|||||

It sounds like it still wants you to input the password. When you SSH to HostB from HostA, does it ask for a password?

If it does, you will need to change your ssh_config file (/etc/ssh/sshd_config on RHEL/Centos) to have:

PasswordAuthentication no

If PasswordAuthentication is set to yes, it will always prompt you for a password.

|improve this answer|||||
  • No, this is backwards (and may lock you out of the host if you don't have public key auth set up). By disabling password authentication, you aren't adding any ways into a host, you're only locking ways out. If a password prompt appears, that is because other methods have already failed. – marcan May 12 '16 at 11:49

Try this:

ssh root@hostb 'bash -s' < local-script.sh
|improve this answer|||||
  • OP's problem is about password being asked, not sending the script. – Archemar May 12 '16 at 10:38
  • not related to the question. – Mongrel May 12 '16 at 11:05

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.