Skip to content
Advertisement

change user and run ssh instruction in 1 line

I’m trying to change my user to one that doesn’t need password to run ssh instructions and then do exactly that, run an ssh instruction. What I have now is:

sudo su - testUser ssh testUser@server2 'cat /home/randomUser/hola.txt'

But I’m getting the answer:

/usr/bin/ssh: /usr/bin/ssh: cannot execute binary file

if I put the instructions in a different file called testit like this:

ssh testUser@server2

cat /home/randomUser/hola.txt

and I run:

sudo su - testUser < testit

it works!, but I need to use the one line instruction, someone know what should I change to make it work?

Advertisement

Answer

sudo su - testUser

why don’t you use just sudo -u testUser as it is supposed to be used?

But anyway, manual pages for the tools you are using is a good start. For sudo:

sudo [...] [command]

This looks good and fits into your example.

For su:

su [options] [username]

Ola … su does not have any argument command, unless you provide also -c switch, which is written also in the manual page. And it is [option], so it should come in front of [username]! Something like this should do the job:

sudo su -l -c "ssh testUser@server2 'cat /home/randomUser/hola.txt'" testUser

but as I already mentioned, it can be significantly simplified by using sudo only:

sudo -i -u testUser "ssh testUser@server2 'cat /home/randomUser/hola.txt'"
User contributions licensed under: CC BY-SA
2 People found this is helpful
Advertisement