2016-07-20 20 views
0

我必須在其中一臺服務器上創建60個ssh用戶。我使用小型用戶創建腳本創建用戶,該腳本循環訪問用戶列表中的每個用戶。 我試圖運行類似的腳本,它會爲每個用戶生成sshkeys。爲每臺服務器上的多個用戶生成ssh-key文件

#!/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。任何想法解決這個將不勝感激! 謝謝

回答

3

sudo su - $u啓動一個新的shell;在shell退出之前,不會運行下面的命令。相反,您需要使用由sudo啓動的單個外殼運行這些命令。

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 
+0

謝謝Chepner。我只是運行腳本,但我已獲得權限拒絕錯誤,如下所示。 mkdir:無法創建目錄'.ssh':權限被拒絕 chmod:無法訪問'.ssh':權限被拒絕 sh:第3行:cd:.ssh:不是目錄 生成公鑰/私鑰rsa密鑰對。 open id_rsa失敗:權限被拒絕。 保存密鑰失敗:id_rsa。 chmod:無法訪問'/home/userid/.ssh/*':沒有這樣的文件或目錄 cp:無法訪問'authorized_keys':權限被拒絕 – AmigoSe

0

經過幾次嘗試,我做了幾乎沒有改變,現在似乎工作。

#!/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 
相關問題