非交互式密码JAVA中的SSH



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

当我执行ssh user@ipAddress时,它要求输入密码。我尝试ssh user@ipAddressnpassword。它似乎不工作。

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

是否有一种方法可以提供密码作为参数或输入密码?

谢谢! !

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

ssh-keygen

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

这里给出了一步一步的指南。

编辑:如果您无法访问服务器,请使用本问题中导出的Java ssh库。

您可以设置无密码登录,也可以像下面描述的那样输入密码:

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

由于不能使用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

Save the above as asksshpass.sh can chmod +x

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

最新更新