ssh-copy-id est un script assez simple qui devrait être assez facile à répliquer sous Windows.
Si vous ignorez la gestion des paramètres, des erreurs, etc., ce sont les deux commandes de ssh-copy-id qui effectuent le travail la plupart du temps.
GET_ID="cat ${ID_FILE}"
{ eval "$GET_ID" ; } | ssh ${1%:} "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys" || exit 1
En utilisant les outils de mastic, une commande comme celle-ci devrait être équivalente (non testée).
type public_id | plink.exe username@hostname "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys"
Si vous voulez gérer tous les mêmes erreurs, ainsi que l'emplacement de la clé automatique, écrire un script sous Windows sera beaucoup plus compliqué, mais certainement possible.
plink.exe -pw password
travaux. De plus, si vous savez que .ssh / registered_keys existe, la commande est simplementtype id_rsa.pub | plink.exe -ssh user@host -pw password "cat >> .ssh/authorized_keys"
.ssh/
répertoire existe. La>>
redirection créera alors le fichier s'il n'existe pas.Ces réponses ne m'ont pas aidé. Je n'avais vraiment pas besoin de scripts fous. J'avais créé une clé publique sur ma machine cliente dans git bash et j'essayais de la copier sur un VPS.
Après avoir créé votre clé publique, la clé doit être stockée sous le nom "(quel que soit le dossier dans lequel vous avez commencé) /. Ssh / id_rsa.pub"
Utilisez donc cette commande:
cat ~/.ssh/id_rsa.pub | ssh [email protected] "cat >> ~/.ssh/authorized_keys"
oùuser
est votre nom d'utilisateur (parfois "root", ou ce que vous avez configuré) et remplacez-la123.45.67.89
par l'adresse IP de votre machine / hôte / VPS.Si le répertoire
.ssh
n'est pas encore créé sur la machine hôte, utilisez cette petite variante:cat ~/.ssh/id_rsa.pub | ssh [email protected] "mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys"
la source
ssh-copy-id effectue plusieurs opérations (lisez la page de manuel pour plus de détails), mais la chose la plus importante à faire est d'ajouter le contenu de votre fichier de clé publique locale à un fichier distant appelé registered_keys.
Vous pouvez le faire vous-même en ouvrant le fichier de clés avec un éditeur de texte et en collant le contenu dans le terminal Kitty.
echo 'long_line_with_contents_of_public_key_file' >> .ssh/authorized_keys
Alternativement, vous pouvez télécharger le fichier en utilisant WinSCP (qui utilise sftp ou scp comme solution de secours) et faire quelque chose de similaire à ma suggestion précédente, sans le copier / coller désagréable.
cat id_rsa.pub >> .ssh/authorized_keys
où id_rsa.pub est le nom du fichier de la clé publique que vous avez téléchargée.
la source
Inspiré par la réponse de zoredache, j'ai créé un ensemble de scripts qui constituent la version Windows. Cependant, ils dépendent tous de plink. S'il vous plaît jeter un oeil ici
https://github.com/VijayS1/Scripts/blob/master/ssh-copy-id/
J'ai aussi un script Winscp qui peut être utilisé selon une autre réponse. :) Extrait du readme:
Tentative de méthodes jusqu'à présent:
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]"
la source
Dans Windows 7, il existe un ssh.exe
Voici ce qui a fonctionné pour moi:
1. créer une identité (sur Windows)
Cela a créé un fichier d'identité dans le répertoire de base. J'ai changé le nom de la clé publique en "id_rsa"
2. Copiez le fichier sur le système Linux cible à l'aide des crédits SSH à l' adresse https://serverfault.com/users/984/zoredache pour obtenir sa réponse.
Remarque: pour une raison quelconque, la tuyauterie n'a pas fonctionné pour moi:
3. Corrigez le fichier sous linux Le fichier id_rsa.pub sous Windows contient plusieurs lignes, et linux l’attend dans une seule ligne. Nous devons donc le corriger un peu. Connectez-vous à linux et ouvrez le fichier:
Par exemple:
devraient devenir
4. le tester
Cela devrait lister le contenu de / tmp sans demander le mot de passe.
la source
authorized_keys
me fallait que le reformatage en lignes simples!Si vous n'avez pas
ssh-copy-id
Windows, vous pouvez l'exécuter sur le serveur lui-même..pub
extension..pub
fichier sur le serveur.Sur le type de serveur:
Sous Windows, le
ssh-copy-id
script est fourni avec Git pour Windows . Donc, vous pouvez l’utiliser localement, si vous avez Git pour Windows.Si vous ne voulez pas le faire manuellement, vous pouvez utiliser WinSCP 5.15. Il peut configurer l'authentification par clé publique pour vous.
Utilisez le bouton Outils> Installer la clé publique sur le serveur dans la page SSH> Authentification de la boîte de dialogue Paramètres de site WinSCP Advanced .
(Je suis l'auteur de WinSCP)
la source
Si vous utilisez cmder (ou msysgit / mingw qui a scp & ssh), je viens d'écrire un script python simple pour cela. Vous pouvez le trouver ici: https://gist.github.com/ceilfors/fb6908dc8ac96e8fc983
Exemple d'utilisation: utilisateur python ssh-copy-id.py @ remote-machine.
Le mot de passe sera demandé lors de l'exécution du script.
la source
ce que j'ai fait, avoir Cygwin sur ma Win10, me connecter à Linux (basé sur la réponse ci-dessus):
- remarque: avec cat, cela résoudrait automatiquement le chemin de cygwin, ainsi que toute commande de cygwin utilisant la structure cygwin-linux-folder-structure
la source
Les étapes suivantes suffiraient:
ÉTAPE-1: Générer une paire de clés RSA
STE2-2: équivalent de ssh-copy-id dans Windows
ÉTAPE 3: L'authentification sans mot de passe fonctionne!
la source
Il existe une version Windows de ssh-copy-id que j'ai trouvée sur GitHub: https://github.com/zhengyi-yang/ssh-copy-id/tree/master/dist
la source
Version Powershell pour SSH incluse dans Git For Windows
En fait, cela peut fonctionner aussi longtemps que vous avez
ssh
sur votre chemin. Ajoutez ce qui suit dans votre profil powershell:Dans une console PowerShell:
la source