这个问题在这里已有答案:
我有这个连接到服务器的基本脚本file.sh
name=username
routerip=172.21.200.37
echo "$name""@""$routerip"
ssh "$name""@""$routerip"
样本输出:
$ ./file.sh
[email protected]
[email protected]'s password:
我想知道的是如何最好地处理我的脚本中请求的密码。我应该使用expect
吗?还是有另一种方式。此外,如果密码在脚本中,是否应加密以确保安全性?
也许是一个愚蠢的问题,但有没有办法连接到具有用户名的服务器?
如果您关心安全性,那么您绝对不希望在脚本中嵌入密码。而且你也不能真正“加密”密码,因为脚本必须知道如何解密它,任何阅读脚本的人都会看到你是如何做到的(以及解密密钥是什么等)。
如果您在有权登录到机器B的机器A上运行脚本,我总是这样做是在机器A上设置一个私有ssh密钥,并将公钥放在用户的authorized_keys
文件中机器B.
(回答你的上一个问题,不,没有用户名就没办法进行这种登录。)
我同意@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