ssh-copy-id to dość prosty skrypt, który powinien być dość łatwy do replikacji pod Windows.
Jeśli zignorujesz całą obsługę parametrów, obsługę błędów itd., Są to dwie komendy z ssh-copy-id, które faktycznie wykonują pracę przez większość czasu.
GET_ID="cat ${ID_FILE}"
{ eval "$GET_ID" ; } | ssh ${1%:} "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys" || exit 1
Za pomocą narzędzi szpachlowych takie polecenie powinno być równoważne (nie testowane).
type public_id | plink.exe username@hostname "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys"
Jeśli chcesz wykonać tę samą obsługę błędów i automatyczną lokalizację klucza, na pewno napisanie skryptu pod Windows będzie o wiele trudniejsze, ale na pewno możliwe.
plink.exe -pw password
Pracuje. Również jeśli wiesz, że .ssh / Author_keys istnieje, polecenie jest po prostutype id_rsa.pub | plink.exe -ssh user@host -pw password "cat >> .ssh/authorized_keys"
.ssh/
katalog istnieje.>>
Przekierowanie będzie następnie utworzyć plik, jeśli nie istnieje.Te odpowiedzi mi nie pomogły. Naprawdę nie potrzebowałem żadnych szalonych scenariuszy. Utworzyłem klucz publiczny na moim komputerze klienckim w git bash i próbowałem skopiować go na VPS.
Po utworzeniu klucza publicznego klucz powinien być przechowywany jako „(bez względu na folder, w którym zacząłeś) /. Ssh / id_rsa.pub”
Więc użyj tego polecenia:
cat ~/.ssh/id_rsa.pub | ssh [email protected] "cat >> ~/.ssh/authorized_keys"
gdzieuser
jest twoja nazwa użytkownika (czasami „root” lub cokolwiek, co skonfigurowałeś) i zamień123.45.67.89
na adres IP komputera / hosta / VPS.Jeśli katalog
.ssh
nie został jeszcze utworzony na komputerze hosta, użyj tej małej odmiany:cat ~/.ssh/id_rsa.pub | ssh [email protected] "mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys"
źródło
ssh-copy-id robi kilka rzeczy (przeczytaj stronę podręcznika, aby uzyskać szczegółowe informacje), ale najważniejsze jest to, aby dołączyć zawartość lokalnego pliku klucza publicznego do pliku zdalnego o nazwie klucze_autoryzowane.
Możesz to zrobić samodzielnie, otwierając plik klucza za pomocą edytora tekstu i wklejając zawartość w terminalu Kitty.
echo 'long_line_with_contents_of_public_key_file' >> .ssh/authorized_keys
Alternatywnie, możesz przesłać plik za pomocą WinSCP (który używa sftp lub scp jako zastępczy) i zrobić coś podobnego do mojej poprzedniej sugestii, bez brzydkiego kopiowania / wklejania.
cat id_rsa.pub >> .ssh/authorized_keys
gdzie id_rsa.pub jest nazwą przesłanego klucza publicznego.
źródło
Zainspirowany odpowiedzią zoredache, stworzyłem kilka skryptów w wersji dla systemu Windows. Jednak wszystkie zależą od łącza. Proszę spojrzeć tutaj
https://github.com/VijayS1/Scripts/blob/master/ssh-copy-id/
Mam również skrypt winscp, którego można użyć zgodnie z inną odpowiedzią. :) Fragment pliku readme:
Dotychczasowe próby:
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]"
źródło
W systemie Windows 7 jest plik ssh.exe
Oto, co zadziałało dla mnie:
1. utwórz tożsamość (w systemie Windows)
To utworzyło plik tożsamości w katalogu domowym. Zmieniłem nazwę klucza publicznego na „id_rsa”
2. skopiuj plik do docelowego systemu linux, korzystając z Kredytów ssh na https://serverfault.com/users/984/zoredache w celu uzyskania odpowiedzi
Uwaga: z jakiegoś powodu nie działało dla mnie pipowanie:
3. Popraw plik w systemie linux Plik id_rsa.pub w systemie Windows jest wielowierszowy, w którym linux oczekuje go w jednym wierszu, więc musimy go nieco poprawić. Zaloguj się do systemu Linux i otwórz plik:
Na przykład:
powinno stać się
4. przetestuj
Powinno to wyświetlić zawartość / tmp bez pytania o hasło.
źródło
authorized_keys
Potrzebne mi było przeformatowanie do pojedynczych linii!Jeśli nie masz
ssh-copy-id
systemu Windows, możesz uruchomić go na samym serwerze..pub
rozszerzeniem..pub
plik na serwer.Na typie serwera:
W systemie Windows
ssh-copy-id
skrypt jest dostarczany z Git dla Windows . Możesz więc użyć tego lokalnie, jeśli masz Git dla Windows.Jeśli nie chcesz tego robić ręcznie, możesz użyć WinSCP 5.15. Może skonfigurować uwierzytelnianie za pomocą klucza publicznego.
Użyj Narzędzia> Zainstaluj klucz publiczny w serwerze na stronie SSH> Strona uwierzytelniania w oknie dialogowym Zaawansowane ustawienia witryny WinSCP .
(Jestem autorem WinSCP)
źródło
Jeśli używasz cmder (lub msysgit / mingw, który ma scp & ssh), właśnie napisałem do tego prosty skrypt pythona. Można go znaleźć tutaj: https://gist.github.com/ceilfors/fb6908dc8ac96e8fc983
Przykładowe użycie: python ssh-copy-id.py użytkownik @ maszyna zdalna.
Hasło zostanie wyświetlone po uruchomieniu skryptu.
źródło
co zrobiłem, mając CygWin na moim Win10, łącząc się z Linuksem (w oparciu o powyższą odpowiedź):
- uwaga: przy użyciu cat automatycznie rozpozna ścieżkę cygwin, a także dowolne polecenie cygwin wykorzystujące strukturę folderów cygwin-linux-folder
źródło
Wykonaj następujące kroki:
KROK-1: Wygeneruj parę kluczy RSA
STE2-2: Odpowiednik ssh-copy-id w systemie Windows
KROK 3: Uwierzytelnianie bez hasła działa!
źródło
Istnieje wersja ssh-copy-id dla systemu Windows, którą znalazłem na GitHub: https://github.com/zhengyi-yang/ssh-copy-id/tree/master/dist
źródło
Wersja PowerShell dla SSH zawarta w Git dla Windows
W rzeczywistości może działać tak długo, jak masz
ssh
na swojej drodze. Dodaj następujące elementy w swoim profilu PowerShell:W konsoli PowerShell:
źródło