Linux 为每台服务器上的多个用户生成ssh密钥文件

Linux 为每台服务器上的多个用户生成ssh密钥文件,linux,bash,ssh,Linux,Bash,Ssh,我必须在其中一台服务器上创建60个ssh用户。我使用小型用户创建脚本创建用户,该脚本循环遍历用户列表中的每个用户。 我正在尝试运行类似的脚本,它将为每个用户生成sshkeys #!/bin/sh for u in `cat sshusers.txt do echo $u sudo su - $u mkdir .ssh; chmod 700 .ssh; cd .ssh; ssh-keygen -f id_rsa -t rsa -N ''; chmod 600 /home/$u/.ssh/*; c

我必须在其中一台服务器上创建60个ssh用户。我使用小型用户创建脚本创建用户,该脚本循环遍历用户列表中的每个用户。 我正在尝试运行类似的脚本,它将为每个用户生成sshkeys

#!/bin/sh
for u in `cat sshusers.txt
do
echo $u
sudo su - $u
mkdir .ssh; chmod 700 .ssh; cd .ssh; ssh-keygen -f id_rsa -t rsa -N '';
chmod 600 /home/$u/.ssh/*; 
cp id_rsa.pub authorized_keys
done
当我运行这个脚本时,它基本上会登录到所有60个用户的帐户,但不会创建。ssh dir或生成无密码ssh.key。任何解决此问题的想法都将不胜感激!
谢谢

sudo su-$u
启动了一个新的shell;在shell退出之前,后面的命令不会运行。相反,您需要使用由
sudo
启动的单个shell来运行这些命令

while IFS= read -r u; do
    sudo -u "$u" sh -c "
      mkdir .ssh
      chmod 700 .ssh
      cd .ssh
      ssh-keygen -f id_rsa -t rsa -N ''
      chmod 600 '/home/$u/.ssh/'*
      cp id_rsa.pub authorized_keys
      "
done < sshusers.txt
而IFS=read-ru;做
sudo-u“$u”sh-c”
mkdir.ssh
chmod 700.ssh
cd.ssh
ssh keygen-f id_rsa-t rsa-N''
chmod 600'/home/$u/.ssh/'*
cp id_rsa.pub授权密钥
"
完成
sudo su-$u
启动一个新的shell;在shell退出之前,后面的命令不会运行。相反,您需要使用由
sudo
启动的单个shell来运行这些命令

while IFS= read -r u; do
    sudo -u "$u" sh -c "
      mkdir .ssh
      chmod 700 .ssh
      cd .ssh
      ssh-keygen -f id_rsa -t rsa -N ''
      chmod 600 '/home/$u/.ssh/'*
      cp id_rsa.pub authorized_keys
      "
done < sshusers.txt
而IFS=read-ru;做
sudo-u“$u”sh-c”
mkdir.ssh
chmod 700.ssh
cd.ssh
ssh keygen-f id_rsa-t rsa-N''
chmod 600'/home/$u/.ssh/'*
cp id_rsa.pub授权密钥
"
完成
在尝试了几次之后,我做了一些小的改动,现在似乎可以用了

#!/bin/bash
for u in `more sshuser.txt`
do
echo $u
sudo su - "$u" sh -c "
  mkdir .ssh
  chmod 700 .ssh
  cd .ssh
  ssh-keygen -f id_rsa -t rsa -N ''
  chmod 600 '/home/$u/.ssh/'*
  cp id_rsa.pub authorized_keys "

done

在尝试了几次之后,我做了一些小的改变,现在看来效果不错

#!/bin/bash
for u in `more sshuser.txt`
do
echo $u
sudo su - "$u" sh -c "
  mkdir .ssh
  chmod 700 .ssh
  cd .ssh
  ssh-keygen -f id_rsa -t rsa -N ''
  chmod 600 '/home/$u/.ssh/'*
  cp id_rsa.pub authorized_keys "

done

谢谢你,切普纳。我刚刚运行了脚本,但我有如下被拒绝的权限错误。mkdir:无法创建目录“.ssh”:权限被拒绝chmod:无法访问“.ssh”:权限被拒绝sh:第3行:cd:.ssh:不是生成公共/私有rsa密钥对的目录。打开id\u rsa失败:权限被拒绝。保存密钥失败:id\u rsa。chmod:无法访问“/home/userid/.ssh/*”:没有这样的文件或目录cp:无法访问“授权密钥”:权限被拒绝Hanks Chepner。我刚刚运行了脚本,但我有如下被拒绝的权限错误。mkdir:无法创建目录“.ssh”:权限被拒绝chmod:无法访问“.ssh”:权限被拒绝sh:第3行:cd:.ssh:不是生成公共/私有rsa密钥对的目录。打开id\u rsa失败:权限被拒绝。保存密钥失败:id\u rsa。chmod:无法访问“/home/userid/.ssh/*”:没有这样的文件或目录cp:无法访问“授权密钥”:权限被拒绝