我有一個需要級聯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