用于连接服务器的ssh脚本[重复]

问题描述 投票:0回答:2

我有这个连接到服务器的基本脚本file.sh

name=username
routerip=172.21.200.37

echo "$name""@""$routerip"
ssh "$name""@""$routerip"

样本输出:

$ ./file.sh
[email protected]
[email protected]'s password:

我想知道的是如何最好地处理我的脚本中请求的密码。我应该使用expect吗?还是有另一种方式。此外,如果密码在脚本中,是否应加密以确保安全性?

也许是一个愚蠢的问题,但有没有办法连接到具有用户名的服务器?

bash ssh expect
2个回答
0
投票

如果您关心安全性,那么您绝对不希望在脚本中嵌入密码。而且你也不能真正“加密”密码,因为脚本必须知道如何解密它,任何阅读脚本的人都会看到你是如何做到的(以及解密密钥是什么等)。

如果您在有权登录到机器B的机器A上运行脚本,我总是这样做是在机器A上设置一个私有ssh密钥,并将公钥放在用户的authorized_keys文件中机器B.

(回答你的上一个问题,不,没有用户名就没办法进行这种登录。)


0
投票

我同意@Steve Summit的说法,如果机器B有机器A的公钥,那么只需提供用户名即可登录。您无需提供密码。

使用以下简单脚本来解决您的问题

USERNAME=myUsername
GRID=$1
SERVER=$2

echo "=================== Connecting ==================="
if [ ${GRID} == 'dev' ] && [ ${SERVER} == 'uk' ]
then
        ssh -l ${USERNAME} "dev-uk.xyz.com"

elif [ ${GRID} == 'dev' ] && [ ${SERVER} == 'us' ]
then
        ssh -l ${USERNAME} "dev-us.xyz.com"

else
ssh -l ${USERNAME} ${GRID}"-"${SERVER}".xyz.com"
fi

所以,连接时你只需要运行

./file.sh dev uk

要么

./file.sh qa jer
© www.soinside.com 2019 - 2024. All rights reserved.