sshpass不';t使用SSH ProxyCommand选项

sshpass不';t使用SSH ProxyCommand选项,ssh,expect,sshpass,Ssh,Expect,Sshpass,我正在尝试使用代理自动登录SSH隧道: 我不想使用ssh拷贝id解决方案 sshpass在我设置ssh隧道时,如果不使用ProxyCommand选项,它将正常工作,但如果使用选项集(写入失败。管道断开)。ssh隧道本身使用该选项(询问我密码)运行良好。还尝试在~/.ssh/ssh\u config中设置该选项,但没有解决方案。以下是oneliner: sshpass -p $mypass ssh -fN -o StrictHostKeyChecking=no \ -o ProxyComman

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

  • 我不想使用
    ssh拷贝id
    解决方案
  • sshpass
    在我设置ssh隧道时,如果不使用
    ProxyCommand
    选项,它将正常工作,但如果使用选项集(写入失败。管道断开)。ssh隧道本身使用该选项(询问我密码)运行良好。还尝试在
    ~/.ssh/ssh\u config
    中设置该选项,但没有解决方案。以下是oneliner:

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

  • 有人能帮我吗?谢谢。

    要使用expect:

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

    它起作用了!不过我还有一个问题;当我查看sshd日志时,我看到密码已被接受,连接随即打开和关闭(因此隧道未建立)。如果删除“close$spawn_id”行,我将无法再看到接受的密码日志。你知道为什么会议这么快就结束了吗?
    spawn ssh -fN -o StrictHostKeyChecking=no \
        -o "ProxyCommand=nc -x localhost:8888 %h %p" \
        -R *:$rport:$localhostname:$nport \
        $username@$hostname