【问题标题】:non-interactive password SSH in JAVAJAVA中的非交互式密码SSH
【发布时间】:2011-11-18 17:49:28
【问题描述】:

我有一个需要级联 SSH 的程序,即它 ssh A 服务器,然后使用相同的连接 ssh B 服务器。服务器 A 充当桥梁。我有一个用于 ssh 第一台服务器的 shell 实例。

当我执行 ssh user@ipAddress 时,它会要求输入密码。我试过 ssh user@ipAddress\npassword。它似乎不起作用。

我不能使用任何外部工具,如 ssh-agent 或 expect。我无法控制服务器 A。

有没有办法可以提供密码作为参数或输入密码?

谢谢!!

【问题讨论】:

    标签: java shell ssh passwords non-interactive


    【解决方案1】:

    您应该在客户端生成一个 RSA 密钥

    ssh-keygen
    

    并将公钥放入服务器上authorized_key文件夹中的授权密钥中,即可无需密码即可连接服务器。

    分步指南已给出here

    编辑: 如果您无权访问服务器,请使用this question 中规定的用于 Java 的 ssh 库。

    【讨论】:

    • 我无法控制服务器 A。我无法安装任何证书。我唯一能做的就是使用 ssh。
    • 我更新了我的答案检查这个线程中的代码 sn-ps 你会找到你的答案
    • 感谢 lc2817。我的问题不是连接到服务器 A。我能够通过 SSH 服务器 A。您的回答为我提供了解决方案。我需要使用相同的连接从服务器 A 到服务器 B 的 SSH。谢谢!
    【解决方案2】:

    您可以设置password-less login,也可以像here 中描述的那样输入密码:

    ssh -t -t <machine> <<EO_MY_INPUT
    <password>
    date # (or whichever is the command to get date/time)
    exit
    EO_MY_INPUT
    

    【讨论】:

      【解决方案3】:

      因为你不能使用 expect 或 ssh-keygen

      以下 gem 可用于编写密码 ssh 会话脚本

      http://www.debian-administration.org/articles/587

      #!/bin/bash
      # Copyright (C) 2008 John S. Skogtvedt <jss at bzz.no>
      # Licence: GNU GPL v3 or later at your option
      
      if [ -n "$SSH_ASKPASS_FD" ]
      then
              read password <&$SSH_ASKPASS_FD
              echo "$password"
              exit 0
      elif [ $# -lt 1 ]
      then
              echo "Usage: echo password | $0 <ssh command line>" >&2
              exit 1
      fi
      
      export SSH_ASKPASS=$0
      export SSH_ASKPASS_FD=4
      [ "$DISPLAY" ] || export DISPLAY=dummy:0
      read password
      
      exec 3<&0
      # write password 100 times to make repeated ssh connections work
      for x in $(seq 100)
      do
        echo "$password"
      done | exec setsid "$@" 4<&0 0<&3
      

      将以上内容另存为asksshpass.sh即可chmod +x

      echo "yourpassword" | ./sshaskpass.sh ssh user@server.example.com date
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-12-21
        • 2015-09-30
        • 1970-01-01
        • 1970-01-01
        • 2019-07-24
        • 2011-09-18
        • 1970-01-01
        相关资源
        最近更新 更多