ssh连接到另一台服务器上的用户,并以该用户身份执行shell命令

时间:2016-06-22 07:47:09

标签: linux bash shell unix ssh

当我使用ssh连接到另一台服务器时,我正在使用' EOF'标记在远程服务器中执行某些命令。但是他们无法在远程服务器上执行命令。

如果未启用无密码ssh连接,如何从脚本输入密码而无需用户输入密码?

$ su - oracle < passwd.txt
standard in must be a tty

2 个答案:

答案 0 :(得分:0)

如果未启用密码较少的连通性(假设启用了密钥身份验证 - 更安全......)则在机器之间使用密钥。 使用ssh-keygen生成密钥,并使用ssh-copy-id

将其复制到远程服务器

答案 1 :(得分:0)

这样做的好方法是为该命令设置一个无密码的sudo。

如果没有sudo命令,请安装它,然后使用visudo命令修改sudoers文件,并添加如下一行:

youruser    ALL=(oracle) NOPASSWD: the command you want to launch

例如

girish    ALL=(oracle) NOPASSWD: /bin/stop-process

然后,在您的脚本中,只需执行:

ssh girish@myserver 'sudo -u oracle /bin/stop-process'

并且不会询问密码。