[英]SSH With Remote Login/Commands
如何使用SSH将多个命令发送到联网系统,以root用户身份登录并提供密码?
我知道你可以做:
ssh -l <username> target_host
登录,但是我不确定如何提供密码和命令,因此它们都可以在一行中执行。 我正在寻找一个对网络系统使用许多单行命令的脚本,这些脚本可以与另一台计算机一次性运行。
ssh root @ host“命令”
即: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(协议1),〜/ .ssh / id_dsa.pub(协议2 DSA)或〜/ .ssh / id_rsa.pub(协议2 RSA)。 然后,用户应将公钥复制到远程计算机上他/她的主目录中的〜/ .ssh / authorized_keys中。 尽管行可能很长,authorized_keys文件与常规的〜/ .rhosts文件相对应,并且每行只有一个密钥。 之后,用户无需输入密码即可登录。
你总能这样做
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。 在此处搜索SO的许多帖子,以了解确切的操作方法。
祝你好运,我希望这会有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.