首页 > 解决方案 > ssh-keygen 期望在 1 个命令行中,没有密码

问题描述

我正在尝试使用一个命令行来执行 ssh-keygen 并在没有进一步用户输入的情况下生成密钥(无密码)

我希望这已经足够了

expect -d -c "spawn ssh-keygen; expect -re {.*: } { send '\n' }; expect -re {.*: } { send '\n' }; expect -re {.*: } { send '\n' }" 

然而,在最后一步之后,它只是退出。

尝试多一层

expect -d -c "spawn ssh-keygen; expect -re {.*: } { send '\n' }; expect -re {.*: } { send '\n' }; expect -re {.*: } { send '\n' }; expect -re {.*: } { send '\n' }"

它抱怨Saving key "'" failed: passphrase is too short (minimum five characters)

为什么期望 ssh-keygen 命令在第一次尝试时退出而没有完成?

为什么 ssh-keygen 在他应该收到 \n 时抱怨他收到了“'”?

标签: bashexpect

解决方案


你不需要expect这个。只需使用该-N选项指定一个空密码。

ssh-keygen -f foo -N ''

推荐阅读