如何使用SSH将多个命令发送到联网系统,以root用户身份登录并提供密码?
我知道你可以这样做:
ssh -l <username> target_host
要登录,但我不确定如何提供密码和命令,以便全部在一行中执行。我正在寻找一个带有许多单行命令的脚本到联网系统,可以从另一台计算机一次性运行。
答案 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.关于如何做到这一点的许多帖子。
祝你好运,我希望这会有所帮助。