You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Bash脚本为指定用户创建SSH密钥对?

问题原因

你脚本里的sudo su achebeh_admin会启动一个新的交互式shell,原脚本会暂停执行,直到你手动退出这个新shell才会继续跑后面的ssh-keygen——但这时候已经切回原用户了,所以密钥根本没在目标用户环境下生成。

解决方法

直接用sudo -u <用户名>以目标用户身份执行命令,不用切换shell。另外ssh-keygen默认是交互式的,脚本里要加参数让它自动执行:

修正后的脚本:

for group in admin support engineering
do
        sudo groupadd $group
        sudo useradd -m -s /bin/bash achebeh_${group}
done
sudo passwd achebeh_admin

# 先确保目标用户的.ssh目录存在并设置正确权限
sudo -u achebeh_admin mkdir -p ~achebeh_admin/.ssh
sudo -u achebeh_admin chmod 700 ~achebeh_admin/.ssh

# 非交互式生成SSH密钥对(空密码)
sudo -u achebeh_admin ssh-keygen -t rsa -N "" -f ~achebeh_admin/.ssh/id_rsa
关键参数说明
  • sudo -u achebeh_admin:直接以achebeh_admin用户身份执行后面的命令,不会开启新shell,脚本能持续执行
  • -N "":给密钥设置空密码,避免脚本运行时弹出输入密码的交互提示
  • -f ~achebeh_admin/.ssh/id_rsa:明确指定密钥文件的存储路径,防止因环境变量问题导致路径错误
  • mkdir -p和chmod 700:提前创建.ssh目录并设置仅用户本人可读写的权限,避免ssh-keygen因目录不存在或权限错误失败

内容的提问来源于stack exchange,提问作者user11631346

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 14:06:18