如何使用SSH向联网系统发送多个命令,以超级用户身份登录并提供密码?
我知道你能做到:
ssh -l <username> target_host登录,但我不确定如何提供密码和命令,所以这一切都在一行中执行。我正在寻找一个脚本与许多单行命令到网络系统,可以从另一台计算机上运行的一次性。
发布于 2011-08-09 01:50:18
主机ssh root@“”命令
例如: 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。authorized_keys文件对应于传统的~/.rhosts文件,并且每行有一个键,尽管行可能很长。在此之后,用户无需输入密码即可登录。
发布于 2011-08-09 01:54:30
你总是可以做到的
ssh user@targetHost 'cd /tmp; ls -l'或
myDir="/tmp"
ssh user@targetHost "cd $myDir; ls -l"我已经将完整的shell脚本链接在一起作为'command‘参数,但我不推荐它(不再) ;-0!
相反,请将脚本复制到远程计算机,然后运行它
ssh user@targetHost 'yourRemoteScript'最后,你不能在expect中提供密码,这是许多系统没有的,很多系统都不允许,等等。如果你想要无人值守的操作,你必须使用 ssh_keys。在S.O.上搜索这里,可以找到许多关于如何做到这一点的帖子。
祝你好运,我希望这对你有帮助。
https://stackoverflow.com/questions/6986264
复制相似问题