繁体   English   中英

SSH和远程登录/命令

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM