【发布时间】:2012-08-14 12:05:44
【问题描述】:
我在 bash 中使用 expect 进行自动传递。代码是;
ssh-copy-id -i $SSH_KEY_PATH_PUB $REMOTE_HOST_USER@$REMOTE_HOST_IP (here asks pass)
VAR=$(expect -c"
expect "*?assword:*"
send "$REMOTE_HOST_PASSWD\r";
send -- "\r"
expect eof
")
echo "$VAR"
它仍然询问密码。这是什么问题
已解决:ssh-copy-id -i $SSH_KEY_PATH_PUB $REMOTE_HOST_USER@$REMOTE_HOST_IP 必须在期望块中;
spawn ssh-copy-id -i $SSH_KEY_PATH_PUB $REMOTE_HOST_USER@$REMOTE_HOST_IP
和线
send "$REMOTE_HOST_PASSWD\r";
必须
send \"$REMOTE_HOST_PASSWD\r\";
【问题讨论】:
-
为什么不使用基于密钥的身份验证?