簡體   English   中英

JAVA中的非交互式密碼SSH

[英]non-interactive password SSH in JAVA

我有一個程序,需要級聯SSH,即它ssh一個服務器,然后使用相同的連接ssh B服務器。 服務器A充當橋梁。 我有一個shell實例,用於ssh第一個服務器。

當我在做ssh user @ ipAddress時,它要求輸入密碼。 我試過ssh user @ ipAddress \\ npassword。 它似乎沒有工作。

我不能使用任何外部工具,如ssh-agent或期望。 我無法控制服務器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

將上面保存為asksshpass.sh可以chmod +x

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM