Kopieren Sie meinen SSH-Schlüssel über die SSH-Kopie-ID in einem Skript auf eine Remote-Maschine ohne Aufforderung?

9731
Aamir Mushtaq

Meine Anwendung ist, dass ich meinen SSH-Schlüssel für den autorisierten Zugriff auf eine Remote-Maschine kopieren muss. Ich muss in der Lage sein, ein Skript aufzurufen, das über meinen SSH-Schlüssel auf die Remote-Maschine kopiert wird, ohne dass ich eine Eingabe machen muss. Derzeit wird nach einem Kennwort und einem Ja zum RSA-Fingerabdruck gefragt. Ich brauche es, um meine Hosts automatisch über einen IP-Bereich hinzufügen zu können

5

3 Antworten auf die Frage

10
Rob Calistri

Ich glaube, Sie können sshpass verwenden.

  • Ubuntu / Debian: apt-get install sshpass
  • Fedora / CentOS: yum install sshpass

Zum Beispiel:

sshpass -p "PASSWORD" ssh-copy-id -o StrictHostKeyChecking=no USERNAME@IP

Ich empfehle, das Kennwort nicht direkt im Skript zu speichern, da das Skript möglicherweise mit dem fest codierten Kennwort auf dem Computer verbleibt. Dies würde das Sicherheitsproblem weiter erhöhen. Die Übergabe als Eingabeargument ist möglicherweise vorzuziehen Slizzered vor 9 Jahren 1
Ich würde mit Slizzered übereinstimmen, wenn ich es auf dem Server abspeichere. Es sollte ein Argument für das Skript sein. Wenn Sie jedoch als Argument übergeben, haben Sie immer noch das Problem, dass dieses Kennwort in den Hintergrundprozessen ist, während das Skript ausgeführt wird. Unabhängig davon, wenn Sie den ssh-Schutz mit Dingen wie 'sshpass' umgehen, hat dies immer Auswirkungen auf die Sicherheit! Rob Calistri vor 9 Jahren 2
0
jasonz

Versuchen Sie, die Eingabeaufforderung für das SSH-Kennwort zu verwenden ansible/ansible-playbook -k/--ask-pass. Es wird anrufen sshpass(FYI, vielleicht wird OSX nicht mitgeliefert sshpass).

Für die Überprüfung des Host-Schlüssels fügen Sie hinzu

[defaults] host_key_checking = False 

in ~ / .ansible.cfg oder /etc/ansible/ansible.cfg.

Oder export ANSIBLE_HOST_KEY_CHECKING=Falseeinfach so, wie dieses Handbuch sagt.

Verwenden Sie für das Bereitstellen von SSH- Schlüsseln das Authorized_keys- Modul in einem lesbaren Playbook. Es ist für den Benutzer einfacher, die Skripte idempotent zu halten.

0
Adam C.

Wenn Sie das Kennwort einmal eingeben möchten, kopiert das folgende Skript Ihren ssh-Schlüssel sehr schnell auf eine große Anzahl von Hosts (in hosts.txt aufgelistet), ohne dass Sie Ihr Kennwort in die Befehlszeile eingeben müssen:

# sudo yum install moreutils sshpass openssh-clients echo 'Input Password:'; read -s SSHPASS; export SSHPASS; parallel -i -j 25 sshpass -e ssh-copy-id '-o ConnectTimeout=10 -o StrictHostKeyChecking=no {}' -- `cat hosts.txt`; export SSHPASS=''