【问题标题】:sshpass doesn't work with SSH ProxyCommand optionsshpass 不适用于 SSH ProxyCommand 选项
【发布时间】:2017-04-19 10:09:27
【问题描述】:

我正在尝试使用代理为 SSH 隧道自动进行 SSH 登录:

  1. 我不想使用ssh-copy-id 解决方案
  2. sshpass 在我设置 ssh 隧道时可以正常工作. ssh 隧道本身该选项运行良好,要求我输入密码。还尝试在~/.ssh/ssh_config 中设置选项,但没有解决方案。这是单线:

    sshpass -p $mypass ssh -fN -o StrictHostKeyChecking=no \
      -o ProxyCommand="nc -x localhost:8888 %h %p" -R \
      *:$rport:$localhostname:$nport $username@$hostname
    
  3. 我尝试了Expect 描述的here 脚本,但没有成功。我是新手,无法找出正确的引号转义,因为我找不到复杂的 spawn 示例。这是我没有运气的尝试(以及其他一些引号变体):

    spawn ssh -fN -o StrictHostKeyChecking=no \
      "-o ProxyCommand=\"nc -x localhost:8888 %h %p\"" \
      -R *:$rport:$localhostname:$nport $username@$hostname
    

有人可以帮我吗?谢谢。

【问题讨论】:

    标签: ssh expect sshpass


    【解决方案1】:

    使用期望:

    spawn ssh -fN -o StrictHostKeyChecking=no \
        -o "ProxyCommand=nc -x localhost:8888 %h %p" \
        -R *:$rport:$localhostname:$nport \
        $username@$hostname
    

    【讨论】:

    • 它有效!我还有另一个问题;当我查看 sshd 日志时,我看到密码被接受,然后立即打开和关闭连接(因此没有建立隧道)。如果我删除“close $spawn_id”行,我就看不到接受的密码日志了。你知道为什么会话关闭得那么快吗? pastebin.com/vFYimSu0
    猜你喜欢
    • 2013-06-11
    • 2016-11-17
    • 1970-01-01
    • 1970-01-01
    • 2017-06-14
    • 1970-01-01
    • 1970-01-01
    • 2013-04-12
    • 2013-04-11
    相关资源
    最近更新 更多