expect
http://blog.csdn.net/tantexian/article/details/45887857
http://stackoverflow.com/questions/19403360/how-to-use-expect-to-copy-a-public-key-to-a-host
Under normal conditions SSH toolchain asks the password from terminal, not from stdin. You can provide custom SSH_ASKPASS program to push your password with it.
Create a simple script askpass.sh:
#!/bin/sh
echo $PASSWORD
then configure it to be used in ssh:
chmod a+x askpass.sh
export SSH_ASKPASS=askpass.sh
finally run ssh-copy-id (without expect):
export DISPLAY=:0
PASSWORD=mySecurePassword setsid ssh-copy-id -o StrictHostKeyChecking=no hishost.thatwas.secure.com
setsid detaches from terminal (ssh will then panic and look for askpass program) DISPLAY is also checked by ssh (it thinks your askpass is a GUI)
Note that there might be hidden security vulnerabilities with this approach.
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步