使用k3sup join命令遭遇sudo认证失败,sudo -S无法解决
问题描述
已将本地生成的SSH密钥(路径~/.ssh/id_rsa)复制到Master和Worker节点,但执行以下k3sup join命令时出现sudo认证错误,即使使用sudo -S选项也无法解决:
k3sup join --ip $WORKER_IP --user $WORKER_USER --server-ip $MASTER_IP --server-user $MASTER_USER --k3s-extra-args "--node-external-ip $WORKER_IP --node-ip $WORKER_IP" --k3s-channel stable --print-command
错误输出:
Running: k3sup join ssh: sudo cat /var/lib/rancher/k3s/server/node-token sudo: a terminal is required to read the password; either use the -S option to read from standard input or configure an askpass helper sudo: a password is required Error: unable to get join-token from server: Process exited with status 1
预期正常输出应成功获取节点token,并完成Worker节点的k3s agent安装与配置。
解决方法
方法1:配置Master节点用户免密sudo
k3sup需要在Master节点执行sudo cat /var/lib/rancher/k3s/server/node-token获取token,若用户无免密sudo权限,会触发终端密码输入要求。在Master节点执行以下命令配置免密:
# 替换为你的Master节点用户名 echo "$MASTER_USER ALL=(ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/$MASTER_USER # 设置正确权限避免sudo报错 sudo chmod 0440 /etc/sudoers.d/$MASTER_USER
配置完成后重新执行原k3sup join命令即可。
方法2:手动获取token后指定参数执行
若不想修改sudo配置,先手动从Master节点获取token:
ssh $MASTER_USER@$MASTER_IP "sudo cat /var/lib/rancher/k3s/server/node-token"
将获取到的token替换到以下命令中执行:
k3sup join --ip $WORKER_IP --user $WORKER_USER --server-ip $MASTER_IP --server-user $MASTER_USER --token "替换为拿到的token" --k3s-extra-args "--node-external-ip $WORKER_IP --node-ip $WORKER_IP" --k3s-channel stable --print-command
方法3:检查SSH密钥配置正确性
确保本地SSH公钥已正确添加到Master和Worker节点的~/.ssh/authorized_keys文件,且文件权限符合要求:
# 在Master和Worker节点分别执行 chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
避免因SSH连接仍需密码,导致sudo命令无法无交互执行。
内容的提问来源于stack exchange,提问作者nana
相关产品推荐
相关产品推荐

