我正在尝试创建一个ssh连接,并在脚本中的远程服务器上做一些事情.
但是终端提示我输入密码,然后在终端窗口而不是脚本中打开连接.在退出连接之前,命令不会执行.
我如何从bash脚本中ssh?
hal*_*dan 68
如果您希望密码提示消失,请使用基于密钥的身份验证(此处描述).
要通过ssh远程运行命令,您必须将它们作为ssh的参数提供,如下所示:
root @ host:〜#ssh root @ www'ps -ef | grep apache | grep -v grep | wc -l'
Sie*_*geX 19
如果您想继续使用密码而不使用密钥交换,那么您可以使用'expect'来完成此操作,如下所示:
#!/usr/bin/expect -f
spawn ssh user@hostname
expect "password:"
sleep 1
send "<your password>\r"
command1
command2
commandN
Run Code Online (Sandbox Code Playgroud)
还有另一种方法可以使用共享连接,即:有人使用密码启动连接,并且每个后续连接将在同一通道上进行多路复用,从而无需重新进行身份验证.(它也更快)
# ~/.ssh/config
ControlMaster auto
ControlPath ~/.ssh/pool/%r@%h
Run Code Online (Sandbox Code Playgroud)
然后你只需要登录,只要你登录,bash脚本就能打开ssh连接.
然后,当有人尚未通过以下方式打开频道时,您可以停止脚本工作:
ssh ... -o KbdInteractiveAuthentication=no ....
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
137783 次 |
最近记录: |