我有一个需要级联SSH的程序,即ssh服务器,然后使用相同的连接ssh B服务器。服务器A是一个桥梁。我有一个用于ssh第一个服务器的shell实例。非交互式密码在JAVA中的SSH
当我在做ssh user @ ipAddress时,它要求输入密码。我试过用户@ ipAddress \ n密码。它似乎没有工作。
我不能使用任何外部工具,如ssh-agent或expect。我无法控制服务器A.
有没有办法将密码作为参数或输入密码?
谢谢!
我有一个需要级联SSH的程序,即ssh服务器,然后使用相同的连接ssh B服务器。服务器A是一个桥梁。我有一个用于ssh第一个服务器的shell实例。非交互式密码在JAVA中的SSH
当我在做ssh user @ ipAddress时,它要求输入密码。我试过用户@ ipAddress \ n密码。它似乎没有工作。
我不能使用任何外部工具,如ssh-agent或expect。我无法控制服务器A.
有没有办法将密码作为参数或输入密码?
谢谢!
您应该生成客户端
ssh-keygen
上的RSA密钥,把公钥授权密钥在authorized_key
文件夹中的服务器上能够连接到服务器,无需输入密码。
给出了一步一步的指导here。
编辑: 如果服务器无法访问,请使用SSH-库Java作为在this question decrived。
要么你可以设置的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
ssh不接受stdin上的密码。 –
@glennjackman与适当的参数它会。发布更新。 – Kashyap
既然你不能使用期望或ssh-凯基
下面的宝石可以用来脚本密码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 "[email protected]" 4<&0 0<&3
保存上面asksshpass.sh
可以chmod +x
echo "yourpassword" | ./sshaskpass.sh ssh [email protected] date
我没有对服务器A没有控制,我不能安装任何证书。我唯一能做的就是使用ssh。 – Mo3z
我更新了我的答案检查代码片段在这个线程中,你会发现你的答案 – lc2817
谢谢lc2817。我的问题不是连接到服务器A.我能够SSH服务器A.您的答案为我提供了解决方案。我需要从服务器A到服务器B的SSH使用相同的连接。谢谢! – Mo3z