【问题标题】:(Error while running a command with SSH) command-line: line 0: Bad configuration option(使用 SSH 运行命令时出错)命令行:第 0 行:错误的配置选项
【发布时间】:2019-06-05 18:54:12
【问题描述】:

错误信息:

命令行:第 0 行:错误的配置选项:

sh '''ssh -i ${rundeck_rsa_key} -o StrictHostKeyChecking=no -o centos@xxxx.net "sudo su -c "sh ./home/centos/releases/xx.sh" rundeck"'''

Broken Down 命令(我只是为了您的方便做了上面的命令)

sh '''ssh -i ${rundeck_rsa_key} -o StrictHostKeyChecking=no 
      -o centos@xxxx.net "sudo su -c "sh ./home/centos/releases/xx.sh" servc"'''

我正在尝试

  1. ssh 进入服务器
  2. 将用户更改为“servc”
  3. 执行 xx.sh shell

我认为"sudo su -c "sh ./home/centos/releases/xx.sh" servc" 存在语法错误

你有什么线索吗? :D

【问题讨论】:

  • 为什么这一切都包含在对sh的调用中?顺便说一句,如果远程sudo 要求输入密码,我假设它会,你将无法输入。
  • 你试过简单的ssh -i ${rundeck_rsa_key} -o StrictHostKeyChecking=no -o centos@xxxx.net "sh -c sudo ./home/centos/releases/xx.sh rundeck"吗? (centos@xxx.net 必须在xxx.net 上拥有sudosu 特权,您需要其中一个(sudosu -c),但不能同时拥有)
  • @lurker 不需要密码。
  • 错误消息告诉我您的ssh 选项之一-o 不正确(它们是配置选项)。 key=value 形式的配置选项不是吗?在这种情况下,centos@xxxx.net 将是一个无效的配置选项。你还没有解释为什么你需要sh
  • @lurker 我拿出 -o 并显示了一个不同的错误。 user ./home/centos/releases/xx.sh 不存在。

标签: bash jenkins


【解决方案1】:

如果不对内部字符串进行转义,就不能将双引号字符串嵌套在另一个字符串中。

试试这个:

sh '''ssh -i ${rundeck_rsa_key} -o StrictHostKeyChecking=no -o centos@xxxx.net "sudo su -c \"sh ./home/centos/releases/xx.sh\" rundeck"'''

【讨论】:

  • 另外,如果rundeck_rsa_key 是参数,则''' 应替换为"""
  • 工作。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多