ssh-copy-id - это довольно простой скрипт, который должно быть довольно легко реплицироваться под окнами.
Если вы игнорируете всю обработку параметров, обработку ошибок и т. Д., Это две команды из ssh-copy-id, которые фактически выполняют работу большую часть времени.
GET_ID="cat ${ID_FILE}"
{ eval "$GET_ID" ; } | ssh ${1%:} "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys" || exit 1
При использовании инструментов замазки подобная команда должна быть эквивалентной (не проверенной).
type public_id | plink.exe username@hostname "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys"
Если вы хотите выполнять одинаковую обработку ошибок и автоматическое расположение ключей, я уверен, что написание скрипта под Windows будет намного сложнее, но, безусловно, возможно.
plink.exe -pw password
работает. Кроме того, если вы знаете .ssh / authorized_keys существует команда простоtype id_rsa.pub | plink.exe -ssh user@host -pw password "cat >> .ssh/authorized_keys"
.ssh/
каталог существует.>>
Перенаправление будет затем создать файл , если он не существует.Эти ответы не помогли мне. Мне действительно не нужны были какие-то сумасшедшие сценарии. Я создал открытый ключ на своем клиентском компьютере в git bash и пытался скопировать его на VPS.
После создания вашего открытого ключа ключ должен быть сохранен как «(в какой бы папке вы не начали) /. Ssh / id_rsa.pub»
Так что используйте эту команду:
cat ~/.ssh/id_rsa.pub | ssh user@123.45.67.89 "cat >> ~/.ssh/authorized_keys"
гдеuser
ваше имя пользователя (иногда «root» или что-то еще, что вы, возможно, настроили), и замените123.45.67.89
его IP-адресом вашего компьютера / хоста / VPS.Если каталог
.ssh
еще не создан на хост-компьютере, используйте этот небольшой вариант:cat ~/.ssh/id_rsa.pub | ssh user@123.45.56.78 "mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys"
источник
ssh-copy-id делает несколько вещей ( подробнее см. справочную страницу ), но самое важное, что он делает, - добавляет содержимое вашего локального файла открытого ключа в удаленный файл с именем author_keys.
Вы можете сделать это самостоятельно, открыв файл ключа в текстовом редакторе и вставив содержимое в терминал Kitty.
echo 'long_line_with_contents_of_public_key_file' >> .ssh/authorized_keys
В качестве альтернативы вы можете загрузить файл с помощью WinSCP (который использует sftp или scp в качестве запасного варианта) и сделать что-то похожее на мое предыдущее предложение, без уродливого копирования / вставки.
cat id_rsa.pub >> .ssh/authorized_keys
где id_rsa.pub - это имя загруженного вами открытого ключа.
источник
Вдохновленный ответом zoredache, я создал несколько сценариев для Windows. Однако все они зависят от мнений. Пожалуйста, посмотрите здесь
https://github.com/VijayS1/Scripts/blob/master/ssh-copy-id/
У меня также есть скрипт winscp, который можно использовать согласно другому ответу. :) Выдержка из файла readme:
Попытка методов до сих пор:
usage: .\Scriptname test@example.com password [identity file]
usage: .\Scriptname /i:idtest.pub user@example.com /p:password
usage: .\Scriptname -i idtest.pub user@example.com password
# "WinSCP.com" /script=".\Scriptname" /parameter "user[:password]@example.com" "id_rsa.pub" [/log=".\copyssh.log]"
источник
В Windows 7 есть ssh.exe
Вот что сработало для меня:
1. создать личность (на окнах)
Это создало файл идентификации в домашнем каталоге. Я изменил имя открытого ключа на "id_rsa"
2. скопируйте файл в целевую систему linux, используя ssh Credits для https://serverfault.com/users/984/zoredache для его ответа
Примечание: по какой-то причине у меня не работает трубопровод:
3. Исправьте файл в linux Файл id_rsa.pub в windows является многострочным, в котором linux ожидает его в одной строке, поэтому мы должны немного его исправить. Войдите в Linux и откройте файл:
Например:
должен стать
4. проверить это
Это должно перечислить содержимое / tmp без запроса пароля.
источник
authorized_keys
Все, что мне нужно, - это переформатировать в одну строку!Если у вас нет
ssh-copy-id
Windows, вы можете запустить его на самом сервере..pub
расширением..pub
файл на сервер.На сервере тип:
На Windows
ssh-copy-id
скрипт поставляется с Git для Windows . Так что вы можете использовать это локально, если у вас есть Git для Windows.Если вы не хотите делать это вручную, вы можете использовать WinSCP 5.15. Он может настроить аутентификацию с открытым ключом для вас.
Используйте инструмент> Установить открытый ключ в сервере кнопку на SSH> Authentication странице диалога WinSCP Дополнительных настроек сайта .
(Я автор WinSCP)
источник
Если вы используете cmder (или msysgit / mingw, в котором есть scp & ssh), я просто написал для этого простой скрипт на python. Его можно найти здесь: https://gist.github.com/ceilfors/fb6908dc8ac96e8fc983
Пример использования: python ssh-copy-id.py user @ remote-machine.
Пароль будет запрошен при запуске скрипта.
источник
что я сделал, имея CygWin на Win10, подключаясь к Linux (основываясь на ответе выше):
- примечание: при использовании cat он автоматически разрешит путь cygwin, а также любую команду cygwin, использующую структуру cygwin-linux-folder-Structure
источник
Следующие шаги будут делать:
ШАГ-1: Генерация пары ключей RSA
STE2-2: ssh-copy-id эквивалентен в Windows
ШАГ-3: аутентификация без пароля работает!
источник
Существует версия ssh-copy-id для Windows, которую я нашел на GitHub: https://github.com/zhengyi-yang/ssh-copy-id/tree/master/dist
источник
Версия Powershell для SSH включена в Git For Windows
На самом деле, это может работать так долго, как у вас
ssh
на пути. Добавьте следующее в свой профиль powershell:В консоли PowerShell:
источник