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
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
Ich glaube, Sie können sshpass verwenden.
apt-get install sshpass
yum install sshpass
Zum Beispiel:
sshpass -p "PASSWORD" ssh-copy-id -o StrictHostKeyChecking=no USERNAME@IP
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=False
einfach 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.
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=''