我意识到这个问题已经被问了几次,但我不能在我的搜索地方找到相关的答案。
我在开发环境中工作,其中安全性是不是一个问题,任何人都可能只是猜测密码,如果想了几秒钟。
我所试图做的是简单的。 我在本地.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密钥我想获得这个使用默认密码“密码”。
我已经试过其中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
它给人的follwing错误:
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命令并关闭连接。 随着交互命令我无法看到我打字或实际与机器交互。 有任何想法吗?
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
将安装它。
下面是一个示例expect
使用ssh脚本。 这将记录你在,让您的交互提示的控制:
#!/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密钥对=)
使用sshpass
这是包库可在主要的Linux-ES。
例如,当密码是在password.txt
文件:
sshpass -fpassword.txt ssh username@hostname
sshpass
运行ssh
在一个专用的tty
,欺骗它,以为它是从一个交互式用户获取密码。
文章来源: Bash Script to SSH into a machine without prompting password and without using keys