SSH与远程登录/命令

时间:2011-08-08 17:47:18

标签: unix ssh

如何使用SSH将多个命令发送到联网系统,以root用户身份登录并提供密码?

我知道你可以这样做:

ssh -l <username> target_host

要登录,但我不确定如何提供密码和命令,以便全部在一行中执行。我正在寻找一个带有许多单行命令的脚本到联网系统,可以从另一台计算机一次性运行。

2 个答案:

答案 0 :(得分:6)

ssh root @ host“command”

ie:ssh root@192.168.1.1“cat / etc / fstab”

如果您尝试执行多个命令,我建议您查看某种形式的Expect脚本。我个人是Pexpect(Python)的粉丝。

使用密钥来绕过密码提示(来自man ssh):

  

文件〜/ .ssh / authorized_keys列出了公钥   允许        登录。当用户登录时,ssh程序告诉   服务器        它想用于身份验证的密钥对。该   客户        证明它可以访问私钥和服务器   检查一下        相应的公钥被授权接受该帐户。

     

用户通过运行ssh-keygen(1)创建他/她的密钥对。这个   商店        〜/ .ssh / identity(协议1)中的私钥,〜/ .ssh / id_dsa   (协议        2 DSA),或〜/ .ssh / id_rsa(协议2 RSA)并存储公众   键入        〜/ .ssh / identity.pub(protocol 1),〜/ .ssh / id_dsa.pub(protocol 2)   DSA),或        〜/ .ssh / id_rsa.pub(协议2 RSA)在用户的主目录中。   该        然后用户应该将公钥复制到〜/ .ssh / authorized_keys中   他的她        远程计算机上的主目录。 authorized_keys文件   任意一台        传统的〜/ .rhosts文件,每个都有一个密钥   线,        虽然线条可以很长。在此之后,用户可以登录   在 - 与 -        给出密码。

答案 1 :(得分:1)

你可以随时

ssh user@targetHost 'cd /tmp; ls -l'

myDir="/tmp"
ssh  user@targetHost "cd $myDir; ls -l"

我将完整的shell脚本链接在一起作为'命令'的句子,但我不推荐它(更多); -0!

相反,将脚本复制到远程计算机,然后运行它

 ssh user@targetHost 'yourRemoteScript'

最后,您无法提供密码,将整个内容包装在expect中,许多系统都没有,许多系统不允许,等等。如果您想进行无人值守操作,使用ssh_keys。在这里搜索S.O.关于如何做到这一点的许多帖子。

祝你好运,我希望这会有所帮助。