通过 sshpass 读取标准输入的密码,免交互登录到远程服务器,并执行指定的 “命令”

echo "Gaoyangsray" |sshpass -d0 ssh -4 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o PasswordAuthentication=yes -o PubkeyAuthentication=no  -o RSAAuthentication=no root@${IPADDR2006} "命令"

补充说明:

StrictHostKeyChecking=no 首次连接远程主机时,会自动将主机密钥加入 KnownHostsFile(但这里指定了 /dev/null,所以不会保存),避免脚本卡在 “是否信任主机” 的交互提示。

UserKnownHostsFile=/dev/null 不保存远程主机的公钥到本地,解决 “主机密钥变更导致连接失败” 的问题(比如 ESXi 重装后公钥变化),但生产环境慎用(有中间人攻击风险)。

PubkeyAuthentication=no、RSAAuthentication=no彻底禁用公钥认证:- RSAAuthentication=no 是针对老版本 SSH 的 RSA 公钥认证;- PubkeyAuthentication=no 是通用的公钥认证开关;两者同时禁用,强制 SSH 只用密码登录,避免本地有公钥时优先走公钥认证导致失败。

Categories: 系统运维