【发布时间】:2015-11-28 23:59:27
【问题描述】:
我正在尝试制作一个脚本,它会自动输入密码“root”以将 ssh-key 从 A 复制到 B。由于 ssh-copy 在 B 上不起作用并且也无法安装,所以我使用了:
ssh root@$ip mkdir -p .ssh
cat "~/.ssh/id_rsa.pub" | ssh "root@$ip" 'cat >> .ssh/authorized_keys'
转移密钥。但是 B 会在重新启动时删除其存储。所以我必须自动化这个过程。我认为期望脚本是最简单的解决方案?然而,我对这些不是很有经验。
#!/usr/bin/expect
#31.09.2015
set timeout 30
spawn ssh "root@$ip mkdir -p .ssh"
expect "password:"
send "root\r"
expect "(yes/no)? "
send "yes\r"
spawn cat "~/.ssh/id_rsa.pub" | ssh "root@$ip" 'cat >> .ssh/authorized_keys'
expect "password:"
send "root\r"
interact
它似乎在第一次发送之前有效。然后卡住并等待输入? (错误的期望?)
【问题讨论】:
-
“但是 B 在重启时删除了它的存储”,这是预期的行为吗?
-
另一种选择是使用 ssh 密钥,而不是将密码写入脚本。
标签: linux send expect ssh-keys raspberry-pi2