Как настроить ssh, основанные на ключах («без пароля») входы на sshd-сервер Linux / MacOSX через клиенты Windows, Linux или MacOSX?

5202
Johnny Utahh

Как настроить ssh, основанный на ключе («без пароля») клиент для входа на Linux / MacOSX sshd сервер через клиентов Windows, Linux или MacOSX?

[В поисках как базового, концептуального понимания основанных на ключах логинов ssh / sshd, так и рабочего примера настройки для всех вышеупомянутых операционных систем.]

4
(Я планирую ответить на свой собственный вопрос с описанием концепций входа в систему на основе ключей, включая ответ на запрос и проверку подлинности, а затем предоставить пример оперативной настройки. Но у меня пока недостаточно точек повторения, чтобы ответить сразу, поэтому я нужно подождать ~ 8 часов, прежде чем сделать это.) Johnny Utahh 12 лет назад 0
Убедитесь, что вы видели: [Как настроить SSH, чтобы мне не приходилось вводить свой пароль?] (Http://superuser.com/questions/8077/how-do-i-set-up-ssh -так-я-Dont иметь набираемые-мой-пароль / 8110 # 8110) slhck 12 лет назад 1
@ slhck- thx, полезный реф. Johnny Utahh 12 лет назад 0

1 ответ на вопрос

3
Johnny Utahh

Предпочитаю:

  1. Обсудите краткие основы концепции шифрования ключей (пытаясь раскрыть магию)
  2. Примените упомянутые концепции к входу через сеть (аутентификация)
  3. Предоставьте подробный, рабочий пример / процедуру.

1: Базовое шифрование, концепции аутентификации

Открытый ключ генерирует зашифрованные данные, которые может расшифровать только личный ключ. Не имеет значения, что это за данные. [Может быть простой текстовый файл ... или какая-то система аутентификации по запросу-ответу (подробности ниже) ... это просто механизм шифрования-дешифрования.] Например, somone может зашифровать содержимое электронной почты с помощью открытого ключа "Джонни Юты", и в результате, зашифрованный вывод, который может быть расшифрован только с помощью закрытого ключа Джонни Юты. Поэтому важно, чтобы указанный закрытый ключ хранился в безопасном месте (предпочтительно не путешествуя по сети), чтобы поддерживать «безопасную и приватную» связь.

2: Применение указанных концепций для включения входа без пароля

Вход в систему без пароля часто включается с помощью системы аутентификации по запросу. Система «войти в систему» ​​(назовите ее MachineA) предлагает «вопрос» (возможно, просто случайная строка), шифрует указанный вопрос с помощью открытого ключа, связанного с «машиной, которая хочет войти (назовите ее MachineX). " MachineX расшифровывает указанный вопрос и передает расшифрованный вопрос обратно как «ответ», который должен быть подтвержден MachineA. После проверки MachineA предоставляет логин MachineX (для MachineA).

Все это предполагает, что MachineA имеет открытый ключ MachineX (в системах Linux, который обычно хранится в ~/.ssh/authorized_keysучетной записи, « входящей в систему») до того, как произойдет вышеуказанный обмен. Вот почему нужна копия указанного открытого ключа в MachineA:~/.ssh/authorized_keysфайле. Этот файл теоретически также может быть назван ~/.ssh/authorized__public__keys... и может упреждающе избежать путаницы среди многих пользователей, если он будет назван таковым ... но предполагается, что "распределенные" ключи являются открытыми ключами, и поэтому мы подозреваем, что разработчики полагал, что «публичное» прилагательное может быть излишним.

3: Подробный, рабочий пример / процедура

(Предисловие: Предполагается, что на сервере / компьютере для входа в систему работает запущенный sshdдемон. Также альтернативный пример / процедура / примечания можно найти в ответе на вопрос «Как настроить SSH, чтобы мне не приходилось вводить пароль» ? », но, помимо прочего, не распространяется на клиентов Windows.)

Создайте пару ключей для процесса входа в систему на стороне клиента (ssh). В Windows рассмотрите возможность использования PuTTYgen и создайте новую пару ключей, включая открытый ключ (конечно). Для Linux / MacOSX рекомендуем ssh-keygen (1) . Посмотрите этот пример сеанса создания пары ключей, запущенного в Unbuntu (Linux) 11.04:

joeschmo@MachineX:~$ ssh-keygen  Generating public/private rsa key pair. Enter file in which to save the key (/home/joeschmo/.ssh/id_rsa):  Created directory '/home/joeschmo/.ssh'. Enter passphrase (empty for no passphrase):  Enter same passphrase again:  Your identification has been saved in /home/joeschmo/.ssh/id_rsa. Your public key has been saved in /home/joeschmo/.ssh/id_rsa.pub. The key fingerprint is: e8:36:69:c5:9a:d2:e3:e0:53:f3:34:d4:d0:a2:8a:80 joeschmo@MachineX The key's randomart image is: [... <output truncated by author to save space> ...] joeschmo@MachineX:~$ ls -la .ssh total 16 drwx------ 2 joeschmo joeschmo 4096 Oct 20 12:26 . drwxr-xr-x 3 joeschmo joeschmo 4096 Oct 20 12:26 .. -rw------- 1 joeschmo joeschmo 1679 Oct 20 12:26 id_rsa -rw-r--r-- 1 joeschmo joeschmo 408 Oct 20 12:26 id_rsa.pub joeschmo@MachineX:~$ cat .ssh/id_rsa.pub  ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCp8nle6B68HgVQoQ8hCyQI9yKjsKnThRS0FjWsOwXId8Mc6i9E3zM0ByxBeneIFP8O42dwYmM9zwWrpP8zvpSbo0J2qIfhm+kZibClJnIIY8nVJt5AbXGdoQHOnxKOJUqP9EZgOgMqEjBNB3IVi7jPw2AXcMeZb1SCCbwsLWXzueECJP7Z4oJTU5+hD0grFMaWNhSszdpSD2Xo1hWi2fPdBu/cRMV4LTD3L7pOI57HeXS2mcLoznQohV7OV4RvDgRS9hhHi1A5/bzg9zRHJBISB0sxnwjmfz/kTaljBVZ8xtM9LenkmQYyj6B+0P+BFDAxzHIJKNOrf+i92fuLktoP joeschmo@MachineX joeschmo@MachineX:~$  

В вышеупомянутом Linux exmaple, /home/joeschmo/.ssh/id_rsaсодержит закрытый ключ (это просто текст), /home/joeschmo/.ssh/id_rsa.pubсодержит открытый ключ (это также просто текст). Я также не вводил парольную фразу в приведенном выше примере, просто вводя «return» для «no passphrase».

[Примечание автора: никогда ранее не использовала парольную фразу для открытого ключа, но при этом необходимо повторно вводить парольную фразу для «доступа» к открытому ключу ... предположительно, парольная фраза шифрует открытый ключ, но я Точно сказать не могу. Если указанную парольную фразу необходимо вводить каждый раз, то такой тип игнорирует цель входа без пароля. Может быть, это единовременная запись? Домашнее задание на потом, возможно ...]

Все вышеуказанные процедуры представляют на сторону клиента (машина «войти из ») процедур. Теперь перейдем к настройке на стороне сервера (машина для входа в систему ).

Вам нужно будет добавить id_rsa.pubсодержимое в ~/.ssh/authorized_keysфайл компьютеров, которым разрешен вход без пароля joeschmo@MachineX. (ПРИМЕЧАНИЕ: обязательно отключите разрешения «группа» и «другой мир» ~/.ssh/authorized_keys, othwerise sshd обычно не читает указанный файл, предположительно потому, что он считается «небезопасным»). ПРИМЕЧАНИЕ: ssh-copy-id автоматизирует / упрощает эту процедуру.

Вот и все. Если вы хотите входить без пароля только с одного компьютера на другой, все готово.

Но ... в целом ...

Сохраните закрытый ключ на одной машине (таким образом, идентифицируя упомянутую машину - давайте назовем ее «MachineX») и скопируйте часть открытого ключа пары на каждую машину, которая предоставит логин для MachineX. Таким образом, все машины A, B, C помещают копию открытого ключа MachineX в свой соответствующий ~/.ssh/authorized_keyфайл, чтобы MachineX мог подключиться к машинам A, B и C. (Кроме того, вы можете записать много других открытых ключей ... из РАЗНЫХ пар ключей в ~/.ssh/authorized_keysмашинах A, B и C соответственно для входа в систему с машин, отличных от MachineX.) Например:

Machine X pub key --- copied to ~/.ssh/authorized_keys at --> Machine A Machine X pub key --- copied to ~/.ssh/authorized_keys at --> Machine B Machine X pub key --- copied to ~/.ssh/authorized_keys at --> Machine C 

Вышеуказанное позволяет войти в систему с MachineX для входа в любой из A, B или C без ввода пароля.

В качестве альтернативы:

Machine Y pub key --- copied to ~/.ssh/authorized_keys at --> Machine A Machine Y pub key --- copied to ~/.ssh/authorized_keys at --> Machine B Machine Y pub key --- copied to ~/.ssh/authorized_keys at --> Machine C 

Вышеприведенное позволяет войти в систему от MachineY для входа в любой из A, B или C без ввода пароля.

Таким образом .... если все вышеперечисленное «приложенное» .... Машины A, B, C и все имеют копию как X и открытый ключ Y в в A, B, и C - х ~/.ssh/authorized_keys.

Также обратите внимание, что каждая пара ключей pub / priv обычно связана с определенной учетной записью на компьютере (в указанных выше случаях машины X и Y). например, johnnyutahh @ MachineX, папа @ MachineY и т. д.

В любом случае закрытый ключ в паре ключ pub / priv живет только на одной машине (если вы «делаете все правильно») и никогда не переносится по сети. Таким образом, это личное. Таким образом, это "безопасно". И наоборот, открытый ключ бросается туда-сюда по ветру и копируется повсюду.

~/.ssh/authorized_keysФайл примера ниже, имеет открытые ключи от моих johnnyutahh@my-laptop, root@site1.com, root@hypothetical-site2.com, joeschmo@MachineX(с SSH-серийник пример выше), и могут содержать другие. Обратите внимание, что эти «адреса» в конце каждой строки являются просто комментариями; это просто произвольный текст, чтобы помочь человеку понять, какой ключ какой, и на самом деле не используется какой-либо из автоматизированных систем / программ для каких-либо действий.

root@MachineA Oct 20 02:20:12 ~# cat ~/.ssh/authorized_keys ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAyTNCV7NUBssxobBZqWormtzcUmICSeGPTSp1i48FVIAebvpgAv7Pb3lFG3vFP8e88w9zGjFnZ6GzTQEwQaTL9YJ/Q9zOvAuxjb8chJz86j9Pg+S8ic4G34c2Og8UoNbTDWYOAZaP/axpoC9W81bh0tjldPnGQuifm9ELHXMXjfGq9QazyPqOcgNG6QL7cl8TYGoj4yJxRwoSytYG65l0/bCFX8JubkFdbWDXNY4tFEfollFIlm10xzQIfz6S6I80Bu0XesFvCjgfLwiLdt+8nT7U9Tawwq8jBc1U0yisQzkSJ9UwXYcKkYX2SJMQ8Ld3Nn82wsisXcEn+Zpe3A6Usw== johnnyutahh@my-laptop ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA0zPre+WkOlNgc4KzFRxGj2Y5UwG0gW+kI2LjvgwNYZLHGQqQ0GQGkmg5rulSbyx3WPo1KNCiaqafQ8fWFmXIgKreGWMwEOehnKLyXLhhxvzpYDgJhI1QbwgInLjUCj8krvsdj9fCLY6sFTYFCXLKUptJGbXThcB170kFhJCUlR33H4WfWn4NWzwpmma4HsVDR7F7eUmJE8FD+6AG4Uw9bljDaUS++XghAZ5oXUofGx7FE2vcQKdNAMF5jYIN/XbL4cj4HuJUonqYgyxCX2JpvJePEwMBW1qQffAjgtgs85217OFmfLIVL6rB3RHh1mmIHSVLtOhAZo1okg708scPCw== root@site1.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC84JdXtzFhQgcFj7/1pz+li2qzZSThJalddkUubuvI71i/Bk7fJ5uI8CCQDPvzr1P+HGaY//RxBG0S2jINXk4LEE1mA3Ogyo+r2ykMaqcNa2JJycHs0sdczZhZR0OOxf5KGz8hhy5W1cdhca6q0AcHmbj+KWz5N0U1qlLptMD4C45QgxtUjFYPWM7r9bDdt6kTo9J39LP4w3S1GTM9uDC8V5NUZX+lFZMap+Tch/YcEiPxAm4VaTM7CGXly+w5XpjlEVUNEb5xu51dOoOXbjueD5Vl3wdPwC6A511v2k9mD/1F4GXjRDzlelKiu4TJ9mVAI2J9+UC0iMUyYj52RO53 root@hypothetical-site2.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCp8nle6B68HgVQoQ8hCyQI9yKjsKnThRS0FjWsOwXId8Mc6i9E3zM0ByxBeneIFP8O42dwYmM9zwWrpP8zvpSbo0J2qIfhm+kZibClJnIIY8nVJt5AbXGdoQHOnxKOJUqP9EZgOgMqEjBNB3IVi7jPw2AXcMeZb1SCCbwsLWXzueECJP7Z4oJTU5+hD0grFMaWNhSszdpSD2Xo1hWi2fPdBu/cRMV4LTD3L7pOI57HeXS2mcLoznQohV7OV4RvDgRS9hhHi1A5/bzg9zRHJBISB0sxnwjmfz/kTaljBVZ8xtM9LenkmQYyj6B+0P+BFDAxzHIJKNOrf+i92fuLktoP joeschmo@MachineX root@MachineA Oct 20 02:20:19 ~# 

Похожие вопросы