I'm trying to run the following command:
ssh user@box.example.com sudo command1 /path/to/file
But It give me an error which read as follows:
sudo: sorry, you must have a tty to run sudo
How do I fix this problem?
This is done in Fedora, RHEL, CentOS and many other Linux distribution for security concern as it will show the password in clear text format. You have to run your ssh command as follows to avoid this error:
ssh -t hostname sudo command ssh -t user@hostname sudo command ssh -t user@box.example.com sudo command1 /path/to/file
The -t option force pseudo-tty allocation. This can be used to execute arbitrary screen-based programs on a remote machine, which can be very useful, e.g., when implementing menu services. Multiple -t options force tty allocation, even if ssh has no local tty.
How Do I Run Command Without Using the -t Option?
You can use the su command instead of the sudo command as follows:
su --session-command="/path/to/command1 arg1 arg2"
OR
ssh user@server1.nixcraft.in su --session-command="/path/to/command1 arg1 arg2"
You can run /scripts/job5143 as vivek user using the same syntax:
ssh user@server1.nixcraft.in su --session-command="/scripts/job1 /nas" vivek
Featured Articles:
- 20 Linux System Monitoring Tools Every SysAdmin Should Know
- 20 Linux Server Hardening Security Tips
- My 10 UNIX Command Line Mistakes
- Linux: 20 Iptables Examples For New SysAdmins

- 25 PHP Security Best Practices For Sys Admins
- The Novice Guide To Buying A Linux Laptop
- 10 Greatest Open Source Software Of 2009
- Top 5 Email Client For Linux, Mac OS X, and Windows Users
- Top 20 OpenSSH Server Best Security Practices
- Top 10 Open Source Web-Based Project Management Software
- Top 5 Linux Video Editor Software
Facebook it - Tweet it - Print it -


{ 2 comments… read them below or add one }
Next response:
“Pseudo-terminal will not be allocated because stdin is not a terminal”
Your thoughts?
– Remove and ampersand after the command and it works fine.