使用Ansible自动化VPS/家庭实验室初始化:无sshpass时SSH配置受阻
解决Mac上Ansible初始化全新VPS的无sshpass连接方案
针对你遇到的Mac上无法安装sshpass导致Ansible初始连接失败的问题,以下是几个实用的解决办法:
方法一:手动推送公钥后再用Ansible
这是最直接的方案,先通过本地SSH手动将公钥传到VPS,之后Ansible就能无密码连接:
- 在本地终端执行命令,替换
<VPS_IP>为你的实际IP:
ssh-copy-id -i ~/.ssh/homelab.pub root@<VPS_IP>
- 输入VPS的root密码,完成公钥推送
- 再运行你的Ansible playbook即可:
ansible-playbook playbooks/add_public_keys.yaml
方法二:使用Paramiko连接插件(无需sshpass)
Ansible支持Paramiko纯Python SSH库,不需要依赖系统的sshpass工具,配置步骤如下:
- 先安装Paramiko:
pip install paramiko
- 可以通过两种方式指定连接方式和密码:
- 方式一:修改inventory文件
在inventory中添加密码变量(如果担心明文安全,后续可以用ansible-vault加密):[homelab] <VPS_IP> ansible_password=你的root密码 ansible_connection=paramiko - 方式二:命令行临时指定
直接在运行playbook时传递参数:ansible-playbook playbooks/add_public_keys.yaml --extra-vars "ansible_password=你的root密码" --connection=paramiko
- 方式一:修改inventory文件
- 运行playbook,此时会通过Paramiko连接,无需sshpass
方法三:启用VPS的密码登录后自动化(可选)
如果你的VPS默认禁用了root密码登录,先手动登录VPS修改/etc/ssh/sshd_config:
# 找到PasswordAuthentication项,改为yes PasswordAuthentication yes
重启sshd服务:
systemctl restart sshd
之后再用上述两种方法完成初始化,完成后建议改回PasswordAuthentication no提升安全性
内容的提问来源于stack exchange,提问作者Ryan
相关产品推荐
相关产品推荐

