Putty удалить host key windows

Обновлено: 06.07.2024

Я пытаюсь подтолкнуть изменения от моего локального РЕПО к удаленному РЕПО. Когда я набираю:

я получаю следующую ошибку:

как я могу решить это? Я использую git из командной строки в Windows 7.

редактировать

когда я пытаюсь сделать простой ssh

я получаю следующую ошибку:

@eckes: Edit2

мой дом находится на %HOMEDRIVE%%HOMEPATH% это правильно?

чтобы обойти это, откройте простое SSH-соединение с origin и SSH спросит вас, Хотите ли вы доверять удаленному хосту (из консоли Git):

если Вы доверяете удаленному хосту (т. е. типа yes ), SSH добавит свой ключ в список известных хостов.

после этого, вы должны быть в состоянии сделать свой git push origin .

в качестве альтернативы, вы также можете вручную добавить ключ origin to .ssh/known_hosts но это требует, чтобы вы придерживались формата known_hosts файл, как описано в man-странице sshd (раздел ФОРМАТ ФАЙЛА AUTHORIZED_KEYS).

для тех из вас, кто настраивает MSYS Git в Windows с помощью шпатлевки через стандартную командную строку, способ добавить хост в кэш шпатлевки-запустить

просто ответ y , а затем Ctrl+C остальное.

Проверьте отпечатки пальцев, хотя. Это предупреждение существует по уважительной причине. Отпечатки пальцев для некоторых сервисов git (отредактируйте, чтобы добавить больше):

  • Github: 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48
  • Bitbucket: 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40
  • Gitorious: 7e:af:8d:ec:f0:39:5e:ba:52:16:ce:19:fa:d4:b8:7d

попробуйте сделать "set / grep-i ssh" из подсказки Git Bash

Если ваша настройка похожа на мою, у вас, вероятно, есть эти настройки:

и это сработало после этого.. Я думаю, putty сохраняет свои ключи где-то еще как $HOME/.SSH или что-то. (У меня также была проблема с коробкой, где $HOME был установлен на "C:\Users\usrnam" вместо " /C / Users / usrnam/"

в любом случае, ваш пробег может варьироваться, но это фиксированная это для меня. :-)

(вероятно, просто делать unset GIT_SSH достаточно, но я был в рулоне)

Примечание: если unset не работает для вас, попробуйте следующее:

Я подозреваю, что ваш GIT_SSH переменная окружения имеет значение %ProgramFiles(x86)%\putty\plink.exe . По какой-то причине PLink не использует .ssh/known_hosts файл в каталоге пользователя для хранения ключей удаленных хостов.

если это на самом деле ваш случай, и это может быть так нарочно, если вы хотите использовать pageant, вам нужно использовать PLink для подключения к хосту в первую очередь.

ответ y к вопросу и успешно подключенный к удаленному хосту, вы должны быть настроены. Идти вперед и снова попробовать свои толкать.

просто ssh для хоста недостаточно, по крайней мере, в Windows. Это добавляет ключ хоста в ssh/known_hosts но ошибка все равно сохраняется.

вам нужно закрыть окно Git bash и открыть новое. Затем кэш реестра очищается и push / pull затем работает.

Рене, свой HOME переменная установлена неправильно. Либо измените его на c:\Users\(your-username) или просто %USERNAME% .

была та же проблема, и забудьте подключение к SSH на порту, где находится репозиторий actuall, а не только общий порт SSH, тогда ключ хоста отличается!

условия работы:

первый: удалить putty known_hosts в registy в соответствии с Regedit.
затем: выполнение команды %GIT_SSH% user@hostname в cmd окна решает проблему.

надеюсь, что это поможет вам всем.

решение с Plink

сохранить этот скрипт python to known_hosts.py :

протестировано на Win7x64 и Python 2.7.

и выберите Импорт в реестр. Keyscan получит открытый ключ для домена (у меня были проблемы с bitbucket), а затем скрипт python преобразует его в формат Plink.

Что сработало для меня, так это запуск конкурс (Putty authentication agent) программа. После того, как конкурс был запущен в фоновом режиме я смог клонировать, push и pull из репозитория. Это сработало для меня, может быть, потому, что я настроил свой открытый ключ так, что всякий раз, когда он используется для первого время, когда требуется пароль и начинается конкурс.

просто откройте Putty и попробуйте установить соединение с удаленным сервером, который вы хотите нажать свой код. когда появится диалоговое окно, нажмите Да (Вы доверяете удаленному), тогда все будет в порядке.

Я решил аналогичную проблему, используя это решение.

вам просто нужно переключиться на встроенный Git, нажать, нажать кнопку Да, а затем вернуться к System Git.

вы можете найти эту опцию в

переход от шпатлевки к OpenSSH исправил эту проблему для меня, без необходимости снимать git_ssh и т. д.

добавление хоста непосредственно с Bash не решило проблему, ошибка все еще произошла при использовании "Fetch all" в расширениях Git. Используя "Pull" на одной ветке, требуемый хост был добавлен автоматически расширениями Git с всплывающим экраном Bash. После этого я снова смог использовать "Fetch All". Не уверен, что сделано Git Extensions по-другому.

SSH авторизация по ключу через PuTTY

На сегодняшний день набирает обороты практика аутентификации к SSH-серверу по ключу, в этом есть несколько преимуществ:

  • Удобство в использовании. У вас может быть несколько серверов и один ключ, не нужно всякий раз вводить пароль от нужного сервера, что сэкономит время.
  • Это безопасно. Вы сможете отключить аутентификацию по паролю и ssh будет защищён от брутфорса.

В это статье мы настроим SSH авторизации на сервере CentOS 7 по ключу, и настроем подключение через ключ утилиту PuTTY.

Генерация ключа

Для генерации ключа будем использовать утилиту PuTTYgen. После запуска выбираем тип ключа для генерации - SSH-2 RSA, и длину ключа - 2048 бит. После чего нажимаем Generate и крутим мышкой по окну пока не закончится генерация ключа.

PuTTYgen

  • Key comment - комментарий к ключу.
  • Key passphrase - парольная фраза к приватному ключу. (Не обязательно к заполнению)
  • Confirm passphrase — подтверждение парольной фразы.

Если вы хотите обезопасить себя по максимальному вы можете задать пароль для защиты приватного ключа в полях Key Passphrase и Confirm Passphrase. Но при каждом входе у вас будет запрашивать пароль который вы ввели. Это обезопасит вас если ваш приватный ключ будет похищен.

Далее сохраняем public key и private key. Приватный ключ мы будем использовать для подключения к серверу, а вот публичный ключ надо будет передать на удаленный сервер которому мы будем подключаться.

Обратите внимания на то как был сгенерирован ваш публичный ключ.

Лично у меня он был сгенерирован не совсем верно, вот пример public_key в дальнейшем при подключении через PuTTY с таким ключом могут возникнуть ошибка Server refused our key.

Для того чтобы избежать подобной ошибки правим файл с публичным ключом, пример правильного ключа.

Установка публичного ключа на сервере

Далее необходимо скопировать наш публичный ключ на сервер. Мы воспользуемся для передачи на сервер ключа утилитой PSFTP, но вам ничего не мешает его передать через любой FTP клиент.

PSFTP

Ключ с копировался, теперь нужно добавить его в

/.ssh/authorized_keys. Далее логинемся еще раз по паролю, через PuTTY и выполняем:

Далее нужно проверить настройки нашего SSH сервера, сами настройки лежат в файле /etc/ssh/sshd_config:

Теперь нам надо будет перезапустить SSH сервер:

Теперь мы можем подключиться к серверу по ключу или паролю.

Но мы можем вообще запретить подключатся к SSH серверу по паролю указав в файле /etc/ssh/sshd_config.

После чего не забываем заново перезапустить SSH сервер.

Настройка и подключения PuTTY

Теперь все что нам осталась это создать новый сеанс и настроить его подключения к SSH серверу по ключу.

Создаем новый сеанс пиши на IP Адрес к серверу.

PuTTY

Далее, мы выбираем меню категорию SSH и там выберем под категорию Auth

putty browse keys

В поле Private key file for authentication загружаем наш приватный ключ.

Далее переходим обратно в раздел Session и сохраняем нашу сессию для того чтобы следующий раз не заполнять все эти поля.

PuTTY — программа, которая позволяет установить соединение с удаленным сервером или компьютером. Программу можно также применять для реализации следующих целей:

  • удаленного администрирования;
  • взаимодействия с VPS -серверами.
  • работы с Telnet-терминалами;
  • настройки маршрутизаторов через RS-232;

Работать рекомендуется через SSH, поскольку он обеспечивает высокий уровень безопасности соединения с другим компьютером. PuTTY поддерживает Telnet, реализующий текстовый интерфейс в терминале (только для отображения текстовой информации в режиме консоли).

Возможности программы

  • Сохранение информации и конфигурационных параметров для многократного применения.
  • Работа с SSH-ключами.
  • Поддержка разных версий SSH-протокола.
  • Встроенные клиенты SCP и SFTP, используемые для различных операций с файлами. Возможности первого ограничиваются только функцией копирования.
  • Перенаправление портов через протокол SSH.
  • Поддержка xterm, ECMA-48 и VT-102.
  • Возможность соединения по IPv6.
  • Работа с алгоритмами шифрования.
  • Аутентификация через ключ, который расположен на удаленной машине.
  • Соединение через proxy.
  • Использование порта RS-232.

Установка на Windows

Работа с программой

Интерфейс

Пользоваться программой PuTTY удобно, т. к. она имеет понятный интерфейс. Чтобы ее настроить , нужно знать назначение основных ее вкладок.

  • Session позволяет задать параметры соединения, чтобы подключиться к серверу (IP-адрес, протокол и порт), а также сохранить настройки для многократного использования.
  • Terminal : режим активации или деактивации терминала.
  • Window : установка кодировки и изменение интерфейса.
  • Connection отвечает за выбор шифрования, аутентификацию без ввода пароля и т. д.

Соединение с удаленным сервером

Принцип подключения не зависит от операционной системы. Это могут быть разные версии Windows (7, 10) или популярные дистрибутивы на основе Linux — Ubuntu, CentOS, Debian.

Подключиться по SSH через PuTTY просто. Для этого нужно следовать приведенной ниже инструкции.

Соединение с удаленным сервером PuTTY

  1. Ввести IP-адрес или имя хоста, к которому необходимо подключиться.
  2. Указать порт (по умолчанию везде 22).
  3. Выбрать тип соединения SSH.
  4. Ввести название подключения и сохранить его, нажав кнопку «Save».
  5. Активировать соединение, нажав на «Open».
  6. Указать данные для авторизации (логин и пароль).

После этого работа с терминалом осуществляется, как на локальном компьютере. Чтобы узнать информацию о версии Ubuntu, нужно ввести команду:

Соединение с удаленным сервером PuTTY

Для удобства можно создать жесткую ссылку (ярлык) на программу для быстрого запуска.

Использование SSH-ключей

Чтобы постоянно не вводить данные авторизации для соединения с удаленным сервером, нужно установить ключ SSH -типа.

Для примера, продемонстрируем ниже, как подключиться через PuTTY , установленного в Windows 10, при помощи SSH-ключа к серверу на Ubuntu.

Шаг №1

Для начала, нужно выполнить ряд действий на компьютере с ОС Windows.

Шаг №2

Далее необходимо перенести SSH-ключ на сервер Ubuntu, выполнив перечисленные ниже действия.

Шаг №3

Возвращаемся к программе PuTTY на Windows 10.

Работа с файлами

Программа позволяет делать операции с файлами. Чтобы закачать файл на сервер , находящийся под управлением Linux Ubuntu (с компьютера на ОС Windows), нужно действовать по приведенной ниже инструкции.

  1. Сохранить тестовый файл « mydoc.txt » на диске C:\ вместе с исполняемым файлом для безопасного копирования — pscp.exe.
  2. Открыть командную строку Windows: « Win+R → cmd → Enter ».
  3. Зайти в папку с программой pscp.exe, для чего ввести команду : « cd /d c:\Putty\pscp.exe » * , где « c:\Putty\ » — путь к файлу pscp.exe.
    * Путь к файлу «c:\Putty\pscp.exe» приведен в качестве примера.
  4. Далее можно приступать непосредственно к работе с файлом. Например, п ередать файл « mydoc.txt » на сервер « 192.241.7.16 » * со стандартным портом и пользователем Ubuntu74 в папку « root » можно командой:
    * IP-адрес «192.241.7.16» приведен только в качестве примера.

Если для соединения используется нестандартный порт (например, 25), то команда примет вид:

Чтобы объединить файлы , нужно их загрузить на удаленную машину, а затем выполнить команду « sudo cat mydoc1.txt mydoc2.txt > mydoc.txt ».

Распространенные ошибки

Проблемы с аутентификацией

Распространенные ошибки PuTTY

Если соединение с удаленным сервером происходит при помощи SSH-ключа, то PuTTY выдаст в диалоговом окне такие строки:

Permission denied (publickey).
PuTTY Error output

Причины ошибки

Ошибка « Access denied » связана с некорректной аутентификацией на основе ключей. Вызвать ее может отсутствие соответствующих прав доступа к файлам или невозможность подтвердить права владельца.

Как решить

  1. Проверить параметры аутентификации (логин и пароль).
  2. Проверить наличие и правильность имени SSH-ключа в PuTTY.
  3. Выполнить проверку содержимого кода SSH-ключа в « authorized_keys ».

Если ни один из вариантов не дал положительного результата, то нужно воспользоваться альтернативным графическим клиентом WinSCP . С его помощью нужно реализовать описанную ниже последовательность действий.

  1. Перейти в папку « /etc/ssh/ », а затем открыть файл « sshd_config ».
  2. Далее необходимо найти строки « PasswordAuthentication: YES » и « PermiRootLogin: NO ». Значения переменных требуется поменять на противоположные значения, т. е. « PasswordAuthentication: NO » и « PermiRootLogin: YES ».
  3. После сохранения изменений необходимо перезапустить PuTTY и соединиться с удаленным сервером.

Подробнее о том, как создать удаленное соединение для разных дистрибутивов Linux, можно узнать из отдельных руководств:

Ошибка подключения

Причины ошибки

  • Отсутствие сетевого подключения.
  • Неверно указан IP-адрес.
  • Порт не поддерживается или его значение задано неверно.
  • Блокировка исходящего подключения антивирусом или брандмауэром.

Как решить

Чаще всего при аутентификации в Windows используется пара "имя пользователя — пароль", что подходит для систем с общим доменом. При работе с несколькими доменами, например с локальными и облачными системами, возникает риск атак методом перебора.

С другой стороны, среды Linux традиционно используют для аутентификации пару открытого и закрытого ключей, что делает ненужным использование угадываемых паролей. OpenSSH содержит средства, поддерживающие такой сценарий:

  • ssh-keygen для создания защищенных ключей;
  • ssh-agent и ssh-add для защищенного хранения закрытых ключей;
  • scp и sftp для защищенного копирования файлов открытого ключа при первом использовании сервера.

В этом документе описано, как использовать эти средства в Windows для перехода на аутентификацию на основе ключей по протоколу SSH. Если вы ничего не знаете об управлении ключами через SSH, мы настоятельно рекомендуем ознакомиться с документом NIST IR 7966 о защите интерактивного и автоматизированного управления доступом через Secure Shell (SSH).

Сведения о парах ключей

Парой ключей называются файлы открытого и закрытого ключей, которые используются в некоторых протоколах аутентификации.

При аутентификации SSH на основе открытого ключа используются асимметричные алгоритмы шифрования для создания двух файлов ключей, один из которых считается закрытым, а второй открытым. Файлы закрытых ключей выполняют функцию паролей, а значит, должны быть постоянно защищены. Если кто-то получит ваш закрытый ключ, он сможет войти от вашего имени на любой сервер с поддержкой SSH, к которому у вас есть доступ. Открытый ключ размещается на сервере SSH. Его можно свободно распространять, не компрометируя закрытый ключ.

Если на сервере SSH используется аутентификация с помощью ключей, сервер и клиент SSH сравнивают открытый ключ, связанный с предоставленным именем пользователя, с закрытым ключом. Если открытый ключ на стороне сервера не проходит проверку по закрытому ключу, сохраненному на стороне клиента, аутентификация не будет выполнена.

Многофакторную проверку подлинности можно реализовать с помощью пар ключей, введя парольную фразу при создании пары ключей (см. раздел о создании пользовательских ключей ниже). При аутентификации пользователю предлагается ввести эту парольную фразу. Она применяется вместе с закрытым ключом для аутентификации пользователя.

Создание ключей узла

Для открытых ключей действуют определенные требования к ACL, которые в среде Windows соответствуют предоставлению доступа только администраторам и системной учетной записи. При первом использовании sshd будет автоматически создана пара ключей для узла.

Сначала необходимо установить OpenSSH Server. См. статью о начале работы с OpenSSH.

По умолчанию служба sshd настроена для запуска вручную. Чтобы запускать ее каждый раз при перезагрузке сервера, выполните следующие команды в командной строке PowerShell с повышенными привилегиями на сервере:

Так как со службой sshd не связан какой-либо пользователь, ключи узла сохраняются в папке C:\ProgramData\ssh.

Создание ключей пользователя

Чтобы использовать аутентификацию на основе ключей, необходимо заранее создать для клиента одну или несколько пар открытого и закрытого ключей. Программа ssh-keygen.exe используется для создания файлов ключей, при этом вы можете задать алгоритмы DSA, RSA, ECDSA или Ed25519. Если алгоритм не указан, используется RSA. Необходимо использовать надежный алгоритм и соответствующую длину ключа, например Ed25519 в этом примере.

Чтобы создать файлы ключей с помощью алгоритма Ed25519, выполните следующую команду в командной строке PowerShell или в командной строке на клиенте:

Эта команда возвращает такие выходные данные (username заменяется вашим именем пользователя):

Можно нажать клавишу ВВОД, чтобы принять вариант по умолчанию, или указать путь и (или) имя файла для создания файлов ключей. На этом этапе вам будет предложено указать парольную фразу для шифрования файлов закрытого ключа. Она может быть пустой, но это не рекомендуется. Парольная фраза в сочетании с файлом ключа позволяет выполнить двухфакторную аутентификацию. В нашем примере парольная фраза остается пустой.

Теперь у вас есть пара открытого и закрытого ключей Ed25519 в указанном расположении. Файлы PUB являются открытыми ключами, а файлы без расширения — закрытыми.

Помните, что файлы закрытых ключей выполняют функцию пароля и должны защищаться так же тщательно. Для этого, чтобы безопасно хранить закрытые ключи в контексте безопасности Windows, связанным с определенным именем входа Windows, используйте ssh-agent. Запустите службу ssh-agent от имени администратора и выполните ssh-add, чтобы сохранить закрытый ключ.

После этого при каждом выполнении аутентификации с этого клиента с использованием закрытого ключа, ssh-agent будет автоматически извлекать его и передавать клиенту SSH.

Мы настоятельно рекомендуем создать резервную копию закрытого ключа в безопасном расположении, а затем удалить его из локальной системы после добавления в ssh-agent. Закрытый ключ нельзя получить из агента, если использовался надежный алгоритм, например Ed25519 в этом примере. Если вы утратите доступ к закрытому ключу, вам нужно будет создать новую пару ключей и обновить открытый ключ во всех системах, с которыми вы работаете.

Развертывание открытого ключа

Чтобы использовать созданный выше ключ пользователя, поместите содержимое открытого ключа (

\.ssh\id_ed25519.pub) на сервер в текстовый файл, имя и расположение которого зависят от того, принадлежит ли учетная запись пользователя к учетной записи участника группы локальных администраторов или обычного пользователя.

Обычный пользователь

Содержимое открытого ключа (

\.ssh\id_ed25519.pub) нужно разместить на сервере в текстовом файле authorized_keys в папке C:\Users\username\.ssh\. Клиентский компонент OpenSSH включает scp (служебная программа безопасной передачи файлов) для упрощения этого процесса.

В приведенном ниже примере открытый ключ копируется на сервер (username заменяется именем пользователя). Изначально необходимо будет использовать пароль для учетной записи пользователя на сервере.

Администратор

Содержимое открытого ключа (

\.ssh\id_ed25519.pub) нужно разместить на сервере в текстовом файле administrators_authorized_keys в папке C:\ProgramData\ssh\. Клиентский компонент OpenSSH включает scp (служебная программа безопасной передачи файлов) для упрощения этого процесса. Список управления доступом для этого файла должен быть настроен на предоставление доступа только администраторам и системе.

В приведенном ниже примере открытый ключ копируется на сервер и настраивает список управления доступом (username заменяется именем пользователя). Изначально необходимо будет использовать пароль для учетной записи пользователя на сервере.

В этом примере показаны шаги для создания administrators_authorized_keys file . Если он выполняется несколько раз, он будет перезаписывать этот файл каждый раз. Чтобы добавить открытый ключ для нескольких пользователей с правами администратора, необходимо добавить этот файл в каждый открытый ключ.

Эти действия завершают настройку, которая требуется для использования аутентификации OpenSSH на основе ключей в среде Windows. Теперь пользователь может подключаться к узлу sshd с любого клиента, где есть закрытый ключ.

Читайте также: