ssh-copy-id ist ein ziemlich einfaches Skript, das unter Windows ziemlich einfach zu replizieren sein sollte.
Wenn Sie die gesamte Parameterbehandlung, Fehlerbehandlung usw. ignorieren, sind dies die beiden Befehle von ssh-copy-id, die die meiste Zeit tatsächlich ausgeführt werden.
GET_ID="cat ${ID_FILE}"
{ eval "$GET_ID" ; } | ssh ${1%:} "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys" || exit 1
Mit den Kitt-Werkzeugen sollte ein Befehl wie dieser gleichwertig sein (nicht getestet).
type public_id | plink.exe username@hostname "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys"
Wenn Sie die gleiche Fehlerbehandlung und den automatischen Schlüsselspeicherort ausführen möchten, ist das Schreiben eines Skripts unter Windows zwar viel schwieriger, aber durchaus möglich.
plink.exe -pw password
funktioniert. Auch wenn Sie wissen, dass .ssh / authorized_keys vorhanden ist, lautet der Befehl einfachtype id_rsa.pub | plink.exe -ssh user@host -pw password "cat >> .ssh/authorized_keys"
.ssh/
Verzeichnis existiert. Die>>
Umleitung erstellt dann die Datei, wenn sie nicht vorhanden ist.Diese Antworten haben mir nicht geholfen. Ich brauchte wirklich keine verrückten Skripte. Ich hatte in Git Bash einen öffentlichen Schlüssel auf meinem Client-Computer erstellt und versuchte, ihn auf einen VPS zu kopieren.
Nach dem Erstellen Ihres öffentlichen Schlüssels sollte der Schlüssel als "(in welchem Ordner auch immer Sie gestartet haben) /. Ssh / id_rsa.pub" gespeichert werden.
Verwenden Sie also diesen Befehl:
cat ~/.ssh/id_rsa.pub | ssh [email protected] "cat >> ~/.ssh/authorized_keys"
Wouser
ist Ihr Benutzername (manchmal "root" oder was auch immer Sie eingerichtet haben), und ersetzen123.45.67.89
Sie ihn durch die IP-Adresse Ihres Rechners / Hosts / VPS.Wenn das Verzeichnis
.ssh
noch nicht auf dem Hostcomputer erstellt wurde, verwenden Sie diese kleine Variante:cat ~/.ssh/id_rsa.pub | ssh [email protected] "mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys"
quelle
ssh-copy-id erledigt einige Dinge (lesen Sie die Manpage für Details), aber das Wichtigste ist, den Inhalt Ihrer lokalen öffentlichen Schlüsseldatei an eine entfernte Datei namens authorized_keys anzuhängen.
Sie können dies selbst tun, indem Sie die Schlüsseldatei mit einem Texteditor öffnen und den Inhalt in das Kitty-Terminal einfügen.
echo 'long_line_with_contents_of_public_key_file' >> .ssh/authorized_keys
Alternativ können Sie die Datei mit WinSCP (das sftp oder scp als Fallback verwendet) hochladen und etwas Ähnliches wie meinen vorherigen Vorschlag tun, ohne das hässliche Kopieren / Einfügen.
cat id_rsa.pub >> .ssh/authorized_keys
Dabei ist id_rsa.pub der Dateiname des von Ihnen hochgeladenen öffentlichen Schlüssels.
quelle
Inspiriert von der Antwort von zoredache habe ich eine Reihe von Skripten erstellt, die die Windows-Version sind. Sie hängen jedoch alle von plink ab. Bitte schauen Sie hier
https://github.com/VijayS1/Scripts/blob/master/ssh-copy-id/
Ich habe auch ein Winscp-Skript, das gemäß einer anderen Antwort verwendet werden kann. :) Auszug aus der Liesmich:
Bisher versuchte Methoden:
usage: .\Scriptname [email protected] password [identity file]
usage: .\Scriptname /i:idtest.pub [email protected] /p:password
usage: .\Scriptname -i idtest.pub [email protected] password
# "WinSCP.com" /script=".\Scriptname" /parameter "user[:password]@example.com" "id_rsa.pub" [/log=".\copyssh.log]"
quelle
In Windows 7 gibt es eine ssh.exe
Folgendes hat bei mir funktioniert:
1. Identität erstellen (unter Windows)
Dadurch wurde eine Identitätsdatei im Ausgangsverzeichnis erstellt. Ich habe den Namen des öffentlichen Schlüssels in "id_rsa" geändert
2. Kopieren Sie die Datei auf das Ziel-Linux-System, und verwenden Sie dabei die SSH- Credits für die Antwort an https://serverfault.com/users/984/zoredache
Hinweis: Aus irgendeinem Grund hat die Rohrleitung bei mir nicht funktioniert:
3. Korrigieren Sie die Datei unter Linux Die Datei id_rsa.pub unter Windows ist mehrzeilig, wobei Linux sie in einer einzelnen Zeile erwartet, sodass wir sie etwas korrigieren müssen. Melden Sie sich bei Linux an und öffnen Sie die Datei:
Zum Beispiel:
soll werden
4. teste es
Dies sollte den Inhalt von / tmp auflisten, ohne nach dem Passwort zu fragen.
quelle
authorized_keys
in einzelne Zeilen ist alles, was ich brauche!Wenn Sie
ssh-copy-id
Windows nicht haben , können Sie es auf dem Server selbst ausführen..pub
Erweiterung..pub
Datei auf den Server hoch.Auf dem Servertyp:
Auf Windows-
ssh-copy-id
Skript kommt mit Git für Windows . Sie können das also lokal verwenden, wenn Sie Git für Windows haben.Wenn Sie dies nicht manuell tun möchten, können Sie WinSCP 5.15 verwenden. Es kann die Authentifizierung mit öffentlichem Schlüssel für Sie einrichten.
Verwenden Sie die Schaltfläche Extras> Öffentlichen Schlüssel auf Server installieren auf der Seite SSH> Authentifizierung im Dialogfeld Erweiterte WinSCP-Site-Einstellungen .
(Ich bin der Autor von WinSCP)
quelle
Wenn Sie cmder (oder msysgit / mingw mit scp & ssh) verwenden, habe ich gerade ein einfaches Python-Skript dafür geschrieben. Es kann hier gefunden werden: https://gist.github.com/ceilfors/fb6908dc8ac96e8fc983
Anwendungsbeispiel: python ssh-copy-id.py user @ remote-machine.
Das Passwort wird beim Ausführen des Skripts abgefragt.
quelle
Was ich getan habe, CygWin auf meinem Win10 und eine Verbindung zu Linux (basierend auf der obigen Antwort):
- hinweis: mit cat wird der cygwin-pfad automatisch aufgelöst, ebenso wie alle cygwin-befehle mit der cygwin-linux-ordner-struktur
quelle
Diese folgenden Schritte würden tun:
SCHRITT 1: Erstellen Sie ein RSA-Schlüsselpaar
STE2-2: ssh-copy-id entspricht in Windows
SCHRITT 3: Passwortlose Authentifizierung funktioniert!
quelle
Es gibt eine Windows-Version von ssh-copy-id, die ich auf GitHub gefunden habe: https://github.com/zhengyi-yang/ssh-copy-id/tree/master/dist
quelle
Powershell-Version für SSH in Git For Windows enthalten
In der Tat kann es so lange funktionieren, wie Sie
ssh
auf Ihrem Weg haben. Fügen Sie Folgendes in Ihr Powershell-Profil ein:In einer Powershell-Konsole:
quelle