我意识到这个问题已经被问了几次,但我找不到任何相关的答案在我的搜索。Bash脚本SSH进入一台机器时不提示密码,也不使用密钥
我在安全性不是问题的开发环境中工作,任何人只要猜想几秒钟就可以猜出密码。
我想要做的事很简单。我在我的本地.bashrc文件中创建了一个别名函数,我希望这个函数能够使用默认密码自动登录到一台机器。
我目前的实施看起来是这样的:
function s() {
ssh [email protected]$1
}
当我运行它,我得到这样的:
~]s 122
ssh [email protected]
[email protected]'s password:
使用bash,而不是使用RSA密钥我想获得这使用默认密码“密码”。
我已经尝试了以下IP和用户已被设置。
Do=$(expect -c "
spawn ssh [email protected]${IP[0]}.${IP[1]}.${IP[2]}.${IP[3]}
expect \"yes/no\"
send \"yes\r\"
expect \"assword\" send \"password\"")
echo $Do
$Do
它给人的follwing错误:
Connecting and logging into server using expect
usage: send [args] string
while executing
"send"
invoked from within
"expect "assword" send "password""
[email protected]'s password:
bash: spawn: command not found...
使用下面的命令,我可以连接一台机器。如果我删除交互它只是运行uptime命令并关闭连接。通过交互命令,我无法看到我正在键入的内容或实际与机器交互的内容。有任何想法吗?
Do=$(expect -c "spawn ssh [email protected]${IP[0]}.${IP[1]}.${IP[2]}.${IP[3]}; set timeout 4; expect \"assword\"; send \"password\n\"; expect \"test\"; send \"uptime\n\"; interact;");echo $Do;
是否产卵命令设置环境?如果没有,那么路径将不会被设置,并且它不会知道在哪里寻找'ssh'。尝试将可执行文件的完整路径。 – Jay
想知道,你对RSA密钥有什么反感?我在建立一个新系统时总是要做的第一件事是授权一个RSA密钥。 – mpontillo
我不想使用RSA密钥,因为我正在使用很多不同的服务器,这些服务器的生命周期非常有限,而且这个脚本将会被很多人使用。想法是通过不必每次输入相同的密码。如果我每次第一次访问一台新机器时都必须输入密码才能使用ssh-copy-id,那么密钥就会失败。 – SuperTetelman