ubuntu 使用 ansible 控制服务器:ssh 以及 sudo 权限问题的解决方案

主机环境: ubuntu 20.04.5 LTS、ansible 2.13.8

一、ssh 远程登陆不了 (基于 ssh key 方式连接)

问题:Data could not be sent to remote host “172.xxx.xxx.xxx”. Make sure this host can be reached over ssh: ssh: connect to host 172.xxx.xxx.xxx port 22: Connection timed out
分析:被控机 (服务器) 可能不信任 控制机 (ubuntu) 的公钥
解决方案:

代码片的命令 均在 控制机 (ubuntu) 上执行。

# 生成ssh key,一路回车,默认生成在/user/.ssh目录下id_rsa和id_rsa.pub
ssh-keygen

# 将公钥拷贝到被控机 (服务器)
# user 在 sudo 组内,否则,user 变为 root(user为对应服务器的用户名)
ssh-copy-id user@172.xxx.xxx.xxx

# 执行以上语句,并输入密码,会在被控机(服务器)生成一个文件/user/.ssh/authorized_keys
# 之后再连接被控机(服务器)就不需要密码了

二、sudo 权限问题

问题:Missing sudo password
分析:当 user 使用超级命令 sudo 时会被询问密码,此时需要避免询问密码的情况
解决方案:

代码片的命令 均在 被控机 (服务器) 上执行。

# 在被控机目录 /etc/sudoers.d 目录上新建一个名为 user 的文件
# user为对应服务器的用户名
cd /etc/sudoers.d
sudo vim user

# 如遇到权限问题进入不了目录则换为 root 用户并执行上边两条命令
su

# 创建完 user 文件 进入 vim 界面,输入以下内容
# user为对应服务器的用户名
user ALL=(ALL) NOPASSWD:ALL

# 保存文件内容退出文件,大功告成!

参考链接:
https://cloud.tencent.com/developer/article/1685073
https://stackoverflow.com/questions/25582740/missing-sudo-password-in-ansible

猜你喜欢

转载自blog.csdn.net/Double_Horse/article/details/131021023