我发现这个问题已被问过几次,但在我搜索的任何地方都找不到相关的答案.
我正在开发环境中工作,安全性不是问题,任何人都可以猜测密码,如果想到几秒钟.
我想做的很简单.我已在我的本地.bashrc文件中创建了一个别名函数,我希望此函数能够自动登录到具有默认密码的计算机.
我目前的实现看起来像这样:
- function s () {
- ssh root@192.168.1.$1
- }
当我运行它时,我得到这样的东西:
- ~]s 122
- ssh root@192.168.1.122
- root@192.168.1.122's password:
使用Bash,而不使用RSA密钥我想使用默认密码’password’.
我已经尝试了以下IP和用户已经设置的地方.
- Do=$(expect -c "
- spawn ssh $User@${IP[0]}.${IP[1]}.${IP[2]}.${IP[3]}
- expect \"yes/no\"
- send \"yes\r\"
- expect \"assword\" send \"password\"")
- echo $Do
- $Do
它给出了以下错误:
- Connecting and logging into server using expect
- usage: send [args] string
- while executing
- "send"
- invoked from within
- "expect "assword" send "password""
- Administrator@192.168.1.176's password:
- bash: spawn: command not found...
使用以下命令,我可以连接一台机器.如果我删除了交互,它只运行uptime命令并关闭连接.使用interaction命令,我无法看到我正在键入的内容或实际与机器进行交互.有任何想法吗?
- Do=$(expect -c "spawn ssh $User@${IP[0]}.${IP[1]}.${IP[2]}.${IP[3]}; set timeout 4; expect \"assword\"; send \"password\n\"; expect \"test\"; send \"uptime\n\"; interact;");echo $Do;
您可以使用expect工具执行此操作:
http://expect.sourceforge.net/
它是广泛可用的,因此根据您的系统,相当于sudo apt-get install expect或yum install expect将安装它.
这是一个带有ssh的expect脚本的例子.这会让您登录并让您控制交互式提示:
- #!/usr/bin/expect
- set login "root"
- set addr "127.0.0.1"
- set pw "password"
- spawn ssh $login@$addr
- expect "$login@$addr\'s password:"
- send "$pw\r"
- expect "#"
- send "cd /developer\r"
- interact
这是一个如何使用expect作为bash脚本的一部分的示例.这将使用ssh,cd登录到/ var,运行脚本,然后退出ssh会话.
- #!/bin/bash
- ...
- login_via_ssh_and_do_stuff() {
- # build the expect script in bash
- expect_sh=$(expect -c "
- spawn ssh root@127.0.0.1
- expect \"password:\"
- send \"password\r\"
- expect \"#\"
- send \"cd /var\r\"
- expect \"#\"
- send \"chmod +x my_script.sh\r\"
- expect \"#\"
- send \"./my_script.sh\r\"
- expect \"#\"
- send \"exit\r\"
- ")
- # run the expect script
- echo "$expect_sh"
- }
您可以将这些代码段保留在本地系统上的脚本中,然后将其作为脚本的别名.
另外:我知道你说安全性不是问题,但我想再次注意,不使用密码ssh的“正确”方法是使用ssh密钥对=)