1

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

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

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

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

谢谢!!

4

3 回答 3

3

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

ssh-keygen

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

此处提供了分步指南。

编辑:如果您无权访问服务器,请使用此问题中所定义的用于 Java 的 ssh-library 。

于 2011-11-17T21:13:46.030 回答
1

您可以设置无密码登录,也可以只输入密码,如下所述

ssh -t -t <machine> <<EO_MY_INPUT
<password>
date # (or whichever is the command to get date/time)
exit
EO_MY_INPUT
于 2011-11-17T21:21:53.867 回答
0

由于您不能使用 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
于 2011-11-18T09:30:59.780 回答