Run .exe with argument on remote ssh command - ssh

Have to figure out how to add argument/variable on remote ssh command. If I run following command without argument then it works fine:
ssh user#host \folder1\folder11 .\file.exe
but have not figured out how to add argument. Have tested:
ssh user#host '\folder1\folder11 .\file.exe $argument' -> the system cannot find the path specified
ssh user#host '\folder1\folder11 .\file.exe "$arument"' -> the system cannot find the path specified
ssh user#host "\folder1\folder11 .\file.exe argument" -> network path was not found
What am I doing wrong here?

Related

Execute commands on remote server behind another server (jumphost) using Plink

I am trying to make an automation using Power Automate Desktop for PuTTY. I have come across a solution to use cmd to run commands using plink.
I used the following steps:
I added PuTTY to system variables
I used the command (in cmd):
plink -ssh hostname#ipaddress -pw password -no-antispoof -m C:\commands.txt
I edited command.txt:
ssh anotherIP -pw passwordForAnotherIP
cd /tmp
cat filename
When I run the command in cmd, I can not input password for the other server that needs to be accessed inside the first one. The error shown is
Bad Port 'w'
The server runs bash 4.2. How can I input password inside the txt file commands so that command line plink command takes it?
Better solution is using Plink's -proxycmd:
plink -ssh anotherIP -pw passwordForAnotherIP -no-antispoof -proxycmd "plink -ssh hostname#ipaddress -pw password -nc anotherIP:22" -m C:\commands.txt
With the commands.txt containing only the:
cd /tmp
cat filename
To answer your literal question:
The OpenSSH ssh has no -pw switch. See Automatically enter SSH password with script.
Additionally, your command.txt won't do what you think anyway. It won't run the cd and cat within the ssh. It would run them after the ssh. So on the ipaddress. How to do this properly is discussed in: Entering password to remote ssh through Plink after establishing a connection.

Error when opening tmux directly from ssh connection

I try to open tmux automatically when I connect to my office Computer (Mac with macOS Catalina).
I found the following solution outlined in a few Answers and a few blog posts:
ssh <hostname> -t "tmux"
When I use this I get following error:
bash: tmux: command not found
I'm confused because I can open tmux once the ssh-connection is established but not directly.
It looks like that tmux installation path is not present in your PATH variable when you ssh.
Check what is the path for tmux installation on remote machine using which tmux. And verify if you can see that path in the output of following command.
ssh <hostname> "echo $PATH"
You can either use the full path
ssh <hostname> -t "/usr/bin/tmux"
or update the PATH settings for non-interactive shell.

Problem running asterisk command through ssh

i need execute remotly an asterisk command via SSH and get the output.
The command to execute is this:
asterisk -rx "core show channels"
and i run remotely this:
sshpass -p PASSWORD ssh HOST asterisk -rx 'core show channels'
but i get
No such command 'core' (type 'core show help core' for other possible commands)
PD: When i run the first command locally I dont get the same, it's runs correctly.
This problem does not happen if i exect a no asterisk command. Example "ls -l"
Any help ?
Try
sshpass -p PASSWORD ssh HOST "/usr/sbin/asterisk -rx 'core show channels'"

SSH to remote server node and change directory

I wanted to achieve the following task:
step 1: ssh to the remote server
step 2: ssh to a node connected to that server
step 3: change to a particulat directory of that node
I was looking for a ssh one liner and issued the following command
ssh -t -t user#remote.server "ssh node; cd /my/directory/"
However, the last cd command did not work. I am still in my home
directory of the node in remote server. I tried to remove the ";" part,
and issued the following one liner:
ssh -t -t user#remote.server "ssh node cd /my/directory/"
No success. The message was "Connection to remote.server closed"
I was wondering whether it is possible to achieve this task
using an ssh one liner.
Thanking you in advance for your inputs
I was close and could have played around a little bit more.
This page helped, and apparently the following syntax worked:
ssh -t user#remote.server "ssh -t node 'cd /my/directory/ ; bash'"
However, I do not understand the role of the "bash" part.

set environment variable SSH_ASKPASS or askpass in sudoers, resp

I'm trying to login to a ssh server and to execute something like:
ssh user#domain.com 'sudo echo "foobar"'
Unfortunately I'm getting an error:
sudo: no tty present and no askpass program specified
Google told me to either set the environment variable SSH_ASKPASS or to set askpass in the sudoers file. My remote machine is running on Debian 6 and I've installed the packages ssh-askpass and ssh-askpass-gnome and my sudoers file looks like this:
Defaults env_reset
Defaults askpass=/usr/bin/ssh-askpass
# User privilege specification
root ALL=(ALL) ALL
user ALL=(ALL) ALL
Can someone tell what I'm doing wrong and how to do it better.
There are two ways to get rid of this error message. The easy way is to provide a pseudo terminal for the remote sudo process. You can do this with the option -t:
ssh -t user#domain.com 'sudo echo "foobar"'
Rather than allocating a TTY, or setting a password that can be seen in the command line, do something like this.
Create a shell file that echo's out your password like:
#!/bin/bash
echo "mypassword"
then copy that to the node you want using scp like this:
scp SudoPass.sh somesystem:~/bin
Then when you ssh do the following:
ssh somesystem "export SUDO_ASKPASS=~/bin/SudoPass.sh;sudo -A command -parameter"
Another way is to run sudo -S in order to "Write the prompt to the standard error and read the password from the standard input instead of using the terminal device" (according to man) together with cat:
cat | ssh user#domain.com 'sudo -S echo "foobar"'
Just input the password when being prompted to.
One advantage is that you can redirect the output of the remote command to a file without "[sudo] password for …" in it:
cat | ssh user#domain.com 'sudo -S tar c --one-file-system /' > backup.tar
Defaults askpass=/usr/bin/ssh-askpass
ssh-askpass requires X server, so instead of providing a terminal (via -t, as suggested by nosid), you may forward X connection via -X:
ssh -X user#domain.com 'sudo echo "foobar"'
However, according to current documentation, askpass is set in sudo.conf as Path, not in sudoers.
How about adding this in the sudoers file:
user ALL=(ALL) NOPASSWD: ALL