3

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.

5
  • 2
    from HostA, can you ssh root@HostB ? Nov 3, 2014 at 20:18
  • do you have an SSH agent running on HostA? Nov 3, 2014 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, 2014 at 20:34
  • Do you get the same results if you use the full path to the script?
    – Centimane
    May 12, 2016 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, 2016 at 11:36

6 Answers 6

1

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@192.168.11.12 \"bash /home/username/Shell\\ Script\\ Directory/Shell\\ Script.sh\" "
0

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
0

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.

0

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.

-2

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.

1
  • 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, 2016 at 11:49
-3

Try this:

ssh root@hostb 'bash -s' < local-script.sh
2
  • OP's problem is about password being asked, not sending the script.
    – Archemar
    May 12, 2016 at 10:38
  • not related to the question.
    – AReddy
    May 12, 2016 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.