无额外依赖下SSH登录脚本中密码变量展开方法咨询
仅原生Shell脚本实现SSH自动登录的方案说明
核心结论:仅靠原生Shell脚本无法实现自动输入SSH密码完成登录
SSH的密码验证流程是直接从终端设备(/dev/tty)读取输入,而非标准输入(stdin)。所以像echo "$_PASSWORD" | ssh "$_USER@$_MACHINE"这类管道方式完全无效,SSH会跳过标准输入的内容,直接向终端请求密码输入。无第三方工具的替代解决方案:使用SSH密钥登录(原生支持,无需额外工具)
- 本地生成无密码的SSH密钥对:
(执行时一路回车即可,ssh-keygen -t ed25519 -N ""-N ""指定密钥无密码) - 将公钥上传到目标机器(仅需手动输入一次密码):
ssh-copy-id "$_USER@$_MACHINE" - 后续登录无需输入密码,直接执行:
ssh "$_USER@$_MACHINE"
- 本地生成无密码的SSH密钥对:
补充说明:如果业务场景必须使用密码验证且无法借助sshpass、expect这类工具,那原生Shell没有可行的实现方式——因为原生Shell没有模拟终端交互式输入的能力,这类功能必须依赖专门的工具实现。
内容的提问来源于stack exchange,提问作者LeBrocoli
相关产品推荐
相关产品推荐

