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