Ich schreibe ein Skript, um Benutzer zu AWS ec2-Instanz hinzuzufügen. Unten ist das Shell-Skript.Kann Schlüssel zu remote Maschine für Benutzer nicht hinzufügen
file=$2
user=$1
user1="ec2-user"
basekey="/home/user-home/some-folder/test.pem"
keyfile=$3
file1=`cat /home/user-home/.ssh/id_rsa.pub`
for line in `cat $file`
do
ssh -i $basekey -o strictHostKeyChecking=no [email protected]$line sudo useradd -m -d /home/$user $user
ssh -i $basekey -o strictHostKeyChecking=no [email protected]$line sudo mkdir /home/$user/.ssh
ssh -i $basekey -o strictHostKeyChecking=no [email protected]$line sudo touch /home/$user/.ssh/authorized_keys
ssh -i $basekey -o strictHostKeyChecking=no [email protected]$line sudo chmod 777 /home/$user/.ssh
ssh -i $basekey -o strictHostKeyChecking=no [email protected]$line sudo chmod 777 /home/$user/.ssh/authorized_keys
scp -i $basekey -o strictHostKeyChecking=no $keyfile [email protected]$line:/home/$user1/
sleep 10
ssh -i $basekey -o strictHostKeyChecking=no [email protected]$line sudo cat /home/$user1/id_rsa.pub > /home/$user/.ssh/authorized_keys
ssh -i $basekey -o strictHostKeyChecking=no [email protected]$line sudo cat /home/$user/.ssh/authorized_keys
echo ssh -i $basekey -o strictHostKeyChecking=no [email protected]$line sudo chmod 600 /home/$user/.ssh/authorized_keys
echo ssh -i $basekey -o strictHostKeyChecking=no [email protected]$line sudo chown $user.$user /home/$user/.ssh/authorized_keys
echo ssh -i $basekey -o strictHostKeyChecking=no [email protected]$line sudo chmod 700 /home/$user/.ssh
echo ssh -i $basekey -o strictHostKeyChecking=no [email protected]$line sudo chown $user.$user /home/$user/.ssh
done
Ich bekomme unter Fehler obwohl die Datei dort vorhanden ist.
./dev-enable.sh: line 24: /home/devuser/.ssh/authorized_keys: No such file or directory
Ich kann keinen Weg finden, diese spezielle Linie zu interpolieren. Ich würde mich über jede Hilfe hier freuen.
definiert, welche Linie ausfällt eigentlich? Warum schläfst du mitten im Drehbuch? Die Datei '/ home/devuser/.ssh/authorized_keys' existiert offensichtlich nicht - was würden Sie von dem Skript erwarten? – l0b0
@ l0b0 Wenn Sie sehen, mache ich eine scp zu ec2-Instanz, die 3-4 Sekunden dauern kann. Zu diesem Zeitpunkt möchte ich nicht, dass mein Skript ohne scp-Operation läuft. Tatsächlich gibt es einen Ordner und eine Datei an diesem bestimmten Ort '/ home/devuser/.ssh/authorized_keys', in dem der Befehl den öffentlichen Schlüssel nicht schreiben kann, versuche ich hinzuzufügen. –
Alle Skriptoperationen sind synchron, daher ist es * unmöglich *, eine Zeile vor * allen * Zeilen zu erreichen, bevor es fertig ist. Sie müssen überhaupt nicht "schlafen". – l0b0