[PYTHON] Ich habe ein Tool erstellt, mit dem das Erstellen und Installieren eines öffentlichen Schlüssels etwas einfacher ist.

zunaechst

Das Erstellen und Installieren eines Unix-basierten SSH-Authentifizierungsschlüssels mit öffentlichem Schlüssel ist einfach und fast identisch, aber mühsam.

Ich wollte dies so weit wie möglich automatisieren.

Ich denke, was Sie im Allgemeinen tun, ist so.

# (1)Schlüsselerstellung
ssh-keygen -N "" -t rsa -f ~/.ssh/id_rsa

# (2-a)Übertragen Sie den Schlüssel auf den Server
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

# (2-b)Oder den Server manuell autorisiert_Zu Schlüsseln hinzufügen
cat ~/.ssh/id_rsa.pub| ssh [email protected] "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys && chmod 700 ~/.ssh/ && chmod 755 ~/"

# (3)Fügen Sie bei Bedarf Informationen zum privaten Schlüssel hinzu
vi ~/.ssh/config

Ich benutze es nicht jeden Tag Wenn es viele Zielserver gibt, wird es ein Ärger sein. Ich denke, es kann automatisiert werden. Ich dachte, das wäre der Auslöser.

Charakteristisch

Es wurde bestätigt, dass es unter Mac OS X und CentOS 7 funktioniert. Ich denke, dass ssh unter Unix / Linux verwendet werden kann, und es kann verwendet werden, wenn Python 2.7 funktioniert.

Sie können die erforderlichen Befehle von (1), (2) und (3) mit einem Befehl ausführen. Wenn Sie (2) benötigen, müssen Sie das Serverkennwort nur einmal übertragen.

Seien Sie versichert, dass die hinter den Kulissen ausgeführten Befehle grün (?) Angezeigt werden.

kobito.1449918056.679926.png

Ich denke, dass es praktisch ist, wenn Sie versuchen, die Authentifizierung mit öffentlichem Schlüssel vorerst aus dem leeren Zustand heraus einzustellen, wenn Sie VPS usw. ausgeliehen haben.

Wie benutzt man

Einführung

Umgebung, in der python2.7.x ausgeführt werden kann Das Programm selbst wird zu einer Quelle gemacht, so dass es leicht gehandhabt werden kann.

Klicken Sie hier für das Repository https://github.com/yuki2006/pubkey

Wenn nur der Hauptkörper ausreicht

wget https://raw.githubusercontent.com/yuki2006/pubkey/master/pubkey.py

Haftungsausschluss

Weil es private Schlüssel behandelt Bitte verwenden Sie nur diejenigen, die das Funktionsprinzip verstehen.

Der Entwickler garantiert nicht, dass Probleme mit diesem Tool auftreten.

Hilfe

python pubkey.py
#Oder mit Ausführungsberechtigung
./pubkey.py 
./pubkey.py -h
usage: pubkey.py [-h] [-l] [-p PrivateKeyPath] [-k] [-c] [-a ALIAS]
                 [-N PassPhrase]
                 server
positional arguments:
  server                user@server

optional arguments:
  -h, --help            show this help message and exit
  -l, --Mit der Option LocalOnly wird der Vorgang auf dem Server ausgeführt
Ich werde nicht arbeiten.
  -p PrivateKeyPath, --private PrivateKeyPath
privater Schlüsselpfad[default
                        /Users/yuki2006/.ssh/id_rsa]
  -k, --Generieren Sie einen Schlüssel mit keygen keygen
  -c, --config          .ssh/Schreiben Sie Hostinformationen in die Konfiguration
  -a ALIAS, --alias ALIAS
                        -Gültig nur mit der Option c,
Von der Konfigurationsdatei
Stellen Sie das Feld Host auf diesen Wert ein
  -N Passphrase Gibt die Passphrase an. Leerzeichen sind ebenfalls möglich
Es ist Noh.(-(Gültig, wenn die Option k verwendet wird)

Fügen Sie den Schlüssel auf der Fernbedienung hinzu

Minimale Optionen

./pubkey.py [email protected]

Führen Sie (2) mit ~ / .ssh / id_rsa.pub als öffentlichem Schlüssel aus. Fügen Sie den öffentlichen Schlüssel zu ~ / .ssh / authorized_keys unter [email protected] hinzu. Wenn zu diesem Zeitpunkt der Befehl ssh-copy-id lokal verwendet werden kann, verwenden Sie (2-a), und wenn er nicht verwendet werden kann, führen Sie (2-b) aus.

Bitte geben Sie das Serverpasswort ein.

Es werden auch ein privater Schlüssel und ein öffentlicher Schlüssel (-k) generiert.

./pubkey.py -k [email protected]

Führen Sie (1) aus, bevor Sie (2) ausführen. Zu diesem Zeitpunkt wird (1) einfach aufgerufen. Geben Sie daher die Passphrase entsprechend der Anzeige ein.

Geben Sie die Passphrase (-N) an.

./pubkey.py -N "" -k [email protected]

Dies ist für diejenigen gedacht, die beim Aufrufen von (1) Probleme beim Eingeben einer Passphrase haben. Die Option -N wird beim Aufruf von ssh-keygen angehängt.

Geben Sie die private Schlüsseldatei an. (-p / -privat)

./pubkey.py -p ~/.ssh/key -N "" -k [email protected]
./pubkey.py --private ~/.ssh/key -N "" -k [email protected]

Wenn Sie etwas anderes als den privaten Standardschlüssel verwenden möchten. Geben Sie den Pfad für den privaten Schlüssel nach -p an. Der verwendete öffentliche Schlüssel ist einer mit hinzugefügtem .pub, z. B. ~ / .ssh / key.pub.

Schreiben Sie die Einstellungen in ~ / .ssh / config (-c)

./pubkey.py -c -p ~/.ssh/key -N "" -k [email protected]

Mit der Option -c wird der folgende Text zu ~ / .ssh / config hinzugefügt. Es ist die Automatisierung des Prozesses von (3).

Host sample.com
       User hoge
       IdentityFile ~/.ssh/key

Geben Sie einen Alias an. (-ein)

./pubkey.py -a sample -c -p ~/.ssh/key -N "" -k [email protected]

Einfach ausgedrückt, wird es wie folgt hinzugefügt.

Host sample
		hostname sample.com
		User hoge
		IdentityFile ~/.ssh/key

Wenn Sie dies einstellen, können Sie eine Verbindung herstellen, indem Sie einfach so drücken. (Ausgelassener Benutzername und Hostname)

ssh sample

Legen Sie den öffentlichen Schlüssel nicht auf die Fernbedienung (-l / -LocalOnly).

./pubkey.py -l -a sample -c -p ~/.ssh/key -N "" -k [email protected]

(2) wird nicht ausgeführt. Geben Sie dies an, wenn Sie eine Keygen- oder Konfigurationsdatei erstellen möchten, den öffentlichen Schlüssel jedoch nicht auf der Fernbedienung ablegen müssen. Hauptsächlich zum Debuggen.

Nachwort

Tatsächlich bestätigte ich, dass es möglich ist, die Effizienz zu verbessern, indem es für viele Einheiten verwendet wird und von Menschen verwendet wird.

Es kann einige Zweifel geben, wie Python geschrieben wird. Es ist 2.7 oder höher, weil es argparse verwendet, Jeder der Hauptprozesse sollte funktionieren, daher würde ich auf Anfrage gerne mit 2.6 usw. arbeiten.

Wenn Sie Probleme haben oder Anfragen ziehen, posten Sie diese bitte auf github. Im Gegenteil, lassen Sie mich bitte wissen, ob es ein nützliches Tool gibt, ohne dieses zu verwenden.

Recommended Posts

Ich habe ein Tool erstellt, mit dem das Erstellen und Installieren eines öffentlichen Schlüssels etwas einfacher ist.
Ich habe ein Tool erstellt, das die Dekomprimierung mit CLI (Python3) etwas erleichtert.
Erstellt ein Tool, mit dem Sie bequem Parameter für Modelle des maschinellen Lernens festlegen können
Ich habe ein Tool erstellt, um Slack über Connpass-Ereignisse zu informieren, und es zu Terraform gemacht
Ich habe ein Tool erstellt, um eine Wortwolke aus Wikipedia zu erstellen
Erstellt einen Toolsver, der Betriebssystem, Python, Module und Toolversionen an Markdown ausspuckt
[Python] Ich habe einen Test von "Streamlit" geschrieben, der das Erstellen von Visualisierungsanwendungen erleichtert.
Ich möchte eine Pipfile erstellen und im Docker wiedergeben
Ich habe ein POST-Skript erstellt, um ein Problem in Github zu erstellen und es im Projekt zu registrieren
Ich habe ein Tool erstellt, um Hy nativ zu kompilieren
Ich habe ein Tool erstellt, um neue Artikel zu erhalten
Ich habe ein System erstellt, das automatisch entscheidet, ob es morgen mit Python ausgeführt wird, und es zu Google Kalender hinzufügt.
Fileinput, ein Modul, das das Schreiben von Perl-ähnlichen Filterprogrammen in Python erleichtert
Ich habe ein Docker-Image erstellt, das RSS liest und automatisch regelmäßig twittert, und es veröffentlicht.
Erstellt eine Web-App, die IT-Ereignisinformationen mit Vue und Flask abbildet
Ich habe in Python ein Tool erstellt, das mit der rechten Maustaste auf eine Excel-Datei klickt und diese für jedes Blatt in Dateien unterteilt.
Ich habe versucht, eine Bibliothek (Common Thread) zu verwenden, die die Verwendung des Python-Threading-Pakets vereinfacht
Als ich versuchte, PIL und matplotlib in einer virtuellen Umgebung zu installieren, war ich süchtig danach.
Eine Geschichte, die es einfach macht, den Wohnbereich mit Elasticsearch und Python abzuschätzen
Ein Skript, mit dem Sie mit der LINE Messaging-API auf einfache Weise umfangreiche Menüs erstellen können
Schritte zum Erstellen eines Jobs, der ein Docker-Image abruft und mit Github-Aktionen testet
Ich habe einen Server mit Python-Socket und SSL erstellt und versucht, über den Browser darauf zuzugreifen
Eine Geschichte, die das Debuggen von Modellen in der Django + SQLAlchemy-Umgebung einfacher macht
Ich habe ein Tool erstellt, um automatisch ein einfaches ER-Diagramm aus der Anweisung CREATE TABLE zu generieren
Eine Geschichte, die es ermöglichte, automatisch eine Anison-Wiedergabeliste aus Ihren Musikdateien zu erstellen
Ich habe ein Tool erstellt, um automatisch ein Zustandsübergangsdiagramm zu generieren, das sowohl für die Webentwicklung als auch für die Anwendungsentwicklung verwendet werden kann
[Titan Craft] Ich habe ein Werkzeug gemacht, um einen Riesen nach Minecraft zu rufen
Ich habe eine Klasse geschrieben, die das Schreiben erleichtert, indem ich die Teiltexte spezifiziere, wenn ich Mecab mit Python verwende
Ich habe versucht, eine Site zu erstellen, mit der die aktualisierten Informationen von Azure einfach angezeigt werden können
Ich möchte ein Histogramm erstellen und die Normalverteilungskurve darauf überlagern. matplotlib edition
Ich habe versucht, eine Serverumgebung zu erstellen, die unter Windows 10 ausgeführt wird
Qiskit: Ich möchte eine Schaltung erstellen, die beliebige Zustände erzeugt! !!
Ich möchte ein System erstellen, um zu verhindern, dass vergessen wird, den Schlüssel 1 festzuziehen
Ich habe versucht, Bulls and Cows mit einem Shell-Programm zu erstellen
Ich habe einen Chat-Chat-Bot mit Tensor2Tensor erstellt und diesmal hat es funktioniert
[Python] Ich habe einen Dekorateur gemacht, der keinen Nutzen zu haben scheint.
Ich habe ein Tool zum automatischen Durchsuchen mehrerer Websites mit Selenium (Python) erstellt.
Ich habe eine Webanwendung in Python erstellt, die Markdown in HTML konvertiert
Ich habe in Python einen Discord-Bot erstellt, der übersetzt, wenn er reagiert
Ich habe ein CLI-Tool erstellt, um Bilder in jedem Verzeichnis in PDF zu konvertieren
Ich habe ein Netzwerk erstellt, um Schwarzweißbilder in Farbbilder umzuwandeln (pix2pix)
Ich habe ein Programm erstellt, um einzugeben, was ich gegessen habe, und um Kalorien und Zucker anzuzeigen
Ich habe eine Bibliothek konoha gemacht, die den Tokenizer auf ein schönes Gefühl umstellt
Ich habe ein Tool erstellt, um Jupyter py mit VS Code in ipynb zu konvertieren
Ich habe ein Beispiel für den Zugriff auf Salesforce mit Python und Bottle erstellt
Wenn ich mit Chainer zurückkehre, passt es ein wenig
Ich habe versucht, einen Linebot zu erstellen (Implementierung)
Ich habe versucht, einen Linebot zu erstellen (Vorbereitung)
Ich habe ein Skript erstellt, um Piktogramme anzuzeigen
[Python] Ich habe ein Skript erstellt, das Dateien auf dem lokalen PC automatisch ausschneidet und auf eine externe SSD einfügt.
Ich habe ein automatisches Stempelwerkzeug für den Browser erstellt.
Ich habe ein Tool erstellt, um die Ausführungszeit von cron zu schätzen (+ PyPI-Debüt)
Ich habe versucht, mein eigenes Modul zu veröffentlichen, damit ich es per Pip installieren kann
Ich habe versucht, eine Klasse zu erstellen, mit der Json in Python problemlos serialisiert werden kann
Ich habe einen Zeilenbot erstellt, der Python verwendet, um ungelesene E-Mails aus Google Mail abzurufen!
Ich möchte eine Prioritätswarteschlange erstellen, die mit Python (2.7) aktualisiert werden kann.
Ein Zauber, der nicht japanische Zeichen und Symbole eliminiert und einen einfachen japanischen Korpus erzeugt
Ich habe gerade ein Tool erstellt, mit dem Daten mithilfe der GUI-Operation einfach als Diagramm angezeigt werden können
Als ich versuchte, mit Python eine virtuelle Umgebung zu erstellen, funktionierte dies nicht