Различия между версиями 11 и 12
Версия 11 от 2021-09-24 13:09:52
Размер: 13508
Редактор: FrBrGeorge
Комментарий:
Версия 12 от 2021-09-24 13:10:19
Размер: 13515
Редактор: FrBrGeorge
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 2: Строка 2:
'''TOGO''' две темы не влезают, оставить ssh и командную строку '''TOGO''' две темы не влезают, оставить ssh и командную строку (и переименовать)
Строка 19: Строка 19:
 
Строка 50: Строка 50:
     
Строка 56: Строка 56:
user@linuxprac$ ssh-keygen  user@linuxprac$ ssh-keygen
Строка 58: Строка 58:
Enter file in which to save the key (/home/user/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Enter file in which to save the key (/home/user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Строка 82: Строка 82:
Agent pid 3823  Agent pid 3823
Строка 99: Строка 99:
user@linuxprac$ ssh-add   
Enter passphrase for /home/user/.ssh/id_rsa: 
user@linuxprac$ ssh-add
Enter passphrase for /home/user/.ssh/id_rsa:
Строка 106: Строка 106:
}}}  }}}
Строка 109: Строка 109:
user@linuxprac$ ssh user@remote.host.ip 
user@remote.host.ip's password: 
user@linuxprac$ ssh user@remote.host.ip
user@remote.host.ip's password:
Строка 115: Строка 115:
user@remote.host.ip's password:  user@remote.host.ip's password:
Строка 127: Строка 127:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC5ZpCaF+DvI/Gw4rqc+UHf4g7STSuyS1IUr9doseJWBVNra5fPTZsRTNFGQV+aoVJF4iLOzQSypiWFpKG2bjG9n05VkSGfME62lE9U8x0UPrmtbNfUWE56e4QxmKqq6ielB2zn94brQ8+vWe1Fx2NyPr0XiX0uyp48scVo1G8tkdRQWeIQf8y2q6RFLWBG0kJnuSd5AabmyUbo/lWMG40+TQGwr2+A5YXUTWgovsFVtIoqo7tpv4ZXrcKA/BVAFUbJwZS4F+sY0W2AtcVjB5RZotjtmVoClVacxpJagK0FUpmLz/MopAELsbDPG4E4CvqsurPrlSxqeIW25rLfXHWfCl7cUhsRcWl7TiDNE/T1t0nQiK1iC/SaSI2wld28uRIfF+kEbbLICozFC1aXehpzwoRNQafTKwixkkI+LioEio1WxS6KPDiT+mcH93IGtH4U6QnEDbOMIZ4xXzdaM54chYgcOl387eU9Rv14c9b68GzZVSBBbFYpykQ6bCJ43FU= user@linuxprac.box.office.basealt.ru  ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC5ZpCaF+DvI/Gw4rqc+UHf4g7STSuyS1IUr9doseJWBVNra5fPTZsRTNFGQV+aoVJF4iLOzQSypiWFpKG2bjG9n05VkSGfME62lE9U8x0UPrmtbNfUWE56e4QxmKqq6ielB2zn94brQ8+vWe1Fx2NyPr0XiX0uyp48scVo1G8tkdRQWeIQf8y2q6RFLWBG0kJnuSd5AabmyUbo/lWMG40+TQGwr2+A5YXUTWgovsFVtIoqo7tpv4ZXrcKA/BVAFUbJwZS4F+sY0W2AtcVjB5RZotjtmVoClVacxpJagK0FUpmLz/MopAELsbDPG4E4CvqsurPrlSxqeIW25rLfXHWfCl7cUhsRcWl7TiDNE/T1t0nQiK1iC/SaSI2wld28uRIfF+kEbbLICozFC1aXehpzwoRNQafTKwixkkI+LioEio1WxS6KPDiT+mcH93IGtH4U6QnEDbOMIZ4xXzdaM54chYgcOl387eU9Rv14c9b68GzZVSBBbFYpykQ6bCJ43FU= user@linuxprac.box.office.basealt.ru
Строка 132: Строка 132:
  
Строка 155: Строка 155:
## 1. Работа с локальным репозиторием  ## 1. Работа с локальным репозиторием
Строка 165: Строка 165:
  * Вслучае !GitHub вам понадобится сгенерировать и зарегистрировать ssh-ключ    * Вслучае !GitHub вам понадобится сгенерировать и зарегистрировать ssh-ключ
Строка 172: Строка 172:
   * [[https://youtu.be/oZSkRCHAiSY|Лекция с установкой в VirtualBox]]     * [[https://youtu.be/oZSkRCHAiSY|Лекция с установкой в VirtualBox]]

Использование SSH и GIT

TOGO две темы не влезают, оставить ssh и командную строку (и переименовать)

  • Терминал и командная строка
    • История и принципы интерфейса командной строки
      • Текстовый диалог
      • Совмещение управления и данных
    • Возможности командной оболочки
      • Интерпретатор командной строки
      • Редактор командной строки, история, достраивание, подсветка
      • ЯП ВУ
    • Терминал, как управляющее устройство
      • История: аппаратное устройство последовательного приёма и передачи байтов
      • Эмулятор терминала
      • Управляющие символы (^C, ^D и т. п.)

      • ESC-последовательности (<ESC>[36m;, <ESC>[m, <ESC>[5;20H_QQQ и т. п.)

    • Где и зачем искать эмулятор терминала
  • Сборочный инструментарий Linux-окружения, общее понятие: почему не всегда есть, как добиться, чтобы был, особенности дистрибутивов и т. п.
  • Работа с SecureShell

    • Терминальнй доступ, проблема защиты учётных данных
    • SSH: вход по логину/паролю
    • Асимметричное шифрование: закрытый и открытый ключ
      • Что можно и что нельзя делать с открытым и закрытым ключами
      • Отпечатки (простой и VisualHostkey)

      • Проблема первоначального обмена ключами:
        1. Чтобы подключиться к удалённому компьютеру по SSH, необходимо зашифровать данные его (компьютера) открытым ключом, т. н. HostKey, а он (и только он!) их расшифрует. Однако HostKey у нас ещё нет

        2. 100% надёжный канал для передачи HostKey

          • Посылаем запрос на HostKey

          • Получаем HostKey и верим ему

          • Шифруем данные с помощью HostKey

          • Удалённый компьютер дешифрует данные с помощью HostKeyPrivate

        3. Отпечаток ключа FingerPrint опубликован в надёжном месте (например, администратор прислал фото)

          • Посылаем запрос на HostKey

          • Получаем HostKey (?)

          • Вычисляем отпечаток, сравниваем его с опубликованным FingerPrint (хоть вручную)

          • Шифруем данные с помощью HostKey

          • Удалённый компьютер дешифрует данные с помощью HostKeyPrivate

        4. Канал скомпрометирован, но мы ему верим
          • Посылаем запрос на HostKey

          • Атакующий перехватывает запрос
          • Атакующий посылает запрос на HostKey

          • Атакующий получает HostKey

          • Атакующий в ответ на наш запрос возвращает нам HostKeyFAKE

          • Получаем HostKeyFAKE и верим ему

          • Шифруем данные с помощью HostKeyFAKE

          • Атакующий перехватывает данные, дешифрует их с помощью HostKeyFAKEPrivate (возможно, даже подменяет)

          • Атакующий шифрует данные с помощью HostKey

          • Удалённый компьютер дешифрует данные с помощью HostKeyPrivate

    • SSH: изготовление персонального ключа и вход по ключу
    • SSH: запароленный ключ и агент для его хранения

Подготовка и использование SSH-ключей

  • Создание пары:
       1 user@linuxprac$ ssh-keygen
       2 Generating public/private rsa key pair.
       3 Enter file in which to save the key (/home/user/.ssh/id_rsa):
       4 Enter passphrase (empty for no passphrase):
       5 Enter same passphrase again:
       6 Your identification has been saved in /home/user/.ssh/id_rsa
       7 Your public key has been saved in /home/user/.ssh/id_rsa.pub
       8 The key fingerprint is:
       9 SHA256:UAOdsJDbNSaGT2lJ0uC/ZeUeISrKVxECRPYksOmNFiY george@linuxprac.box.office.basealt.ru
      10 The key's randomart image is:
      11 +---[RSA 3072]----+
      12 |.+*.**=*o.       |
      13 | + =o+O+*.       |
      14 |Eo  oB++..o      |
      15 |+ + ..o+ + .     |
      16 | + .. + S o      |
      17 |.. . o + . .     |
      18 |  o . .   .      |
      19 |   .             |
      20 |                 |
      21 +----[SHA256]-----+
      22 
    
  • Запуск агента
    • Короткий вариант:
         1 user@linuxprac$ eval `ssh-agent`
         2 Agent pid 3823
         3 
      
    • Это равносильно запуску ssh-agent и копипасте всего его вывода в командную строку

         1 user@linuxprac$ ssh-agent
         2 SSH_AUTH_SOCK=/tmp/.private/user/ssh-XXXXXXB7s3Hb/agent.3822; export SSH_AUTH_SOCK;
         3 SSH_AGENT_PID=3823; export SSH_AGENT_PID;
         4 echo Agent pid 3823;
         5 user@linuxprac$ SSH_AUTH_SOCK=/tmp/.private/user/ssh-XXXXXXB7s3Hb/agent.3822; export SSH_AUTH_SOCK;
         6 user@linuxprac$ SSH_AGENT_PID=3823; export SSH_AGENT_PID;
         7 user@linuxprac$ echo Agent pid 3823
         8 Agent pid 3823
         9 
      
  • Добавление ключа (-l показывает отпечаток, а -L — весь открытый ключ)

       1 user@linuxprac$ ssh-add -l
       2 The agent has no identities.
       3 user@linuxprac$ ssh-add
       4 Enter passphrase for /home/user/.ssh/id_rsa:
       5 Identity added: /home/user/.ssh/id_rsa (george@linuxprac.box.office.basealt.ru)
       6 user@linuxprac$ ssh-add -l
       7 3072 SHA256:UAOdsJDbNSaGT2lJ0uC/ZeUeISrKVxECRPYksOmNFiY george@linuxprac.box.office.basealt.ru (RSA)
       8 user@linuxprac$ ssh-add -L
       9 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC5ZpCaF+DvI/Gw4rqc+UHf4g7STSuyS1IUr9doseJWBVNra5fPTZsRTNFGQV+aoVJF4iLOzQSypiWFpKG2bjG9n05VkSGfME62lE9U8x0UPrmtbNfUWE56e4QxmKqq6ielB2zn94brQ8+vWe1Fx2NyPr0XiX0uyp48scVo1G8tkdRQWeIQf8y2q6RFLWBG0kJnuSd5AabmyUbo/lWMG40+TQGwr2+A5YXUTWgovsFVtIoqo7tpv4ZXrcKA/BVAFUbJwZS4F+sY0W2AtcVjB5RZotjtmVoClVacxpJagK0FUpmLz/MopAELsbDPG4E4CvqsurPrlSxqeIW25rLfXHWfCl7cUhsRcWl7TiDNE/T1t0nQiK1iC/SaSI2wld28uRIfF+kEbbLICozFC1aXehpzwoRNQafTKwixkkI+LioEio1WxS6KPDiT+mcH93IGtH4U6QnEDbOMIZ4xXzdaM54chYgcOl387eU9Rv14c9b68GzZVSBBbFYpykQ6bCJ43FU= george@linuxprac.box.office.basealt.ru
      10 
    
  • Копирование ключа на удалённый хост в качестве разрешённого для аутентификации
       1 user@linuxprac$ ssh user@remote.host.ip
       2 user@remote.host.ip's password:
       3 
       4 user@linuxprac$ ssh-copy-id user@remote.host.ip
       5 /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
       6 /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
       7 user@remote.host.ip's password:
       8 
       9 Number of key(s) added: 1
      10 
      11 Now try logging into the machine, with:   "ssh 'remote.host.ip'"
      12 and check to make sure that only the key(s) you wanted were added.
      13 
    
  • «Беспарольный» логин (пароль, точнее, passphrase от ключа, уже один раз введён при добавлении ключа в агент)
       1 user@linuxprac$ ssh remote.host.ip
       2 Last login: Fri Sep 10 17:35:50 2021 from 193.43.10.248
       3 user@remote$ tail -1 .ssh/authorized_keys
       4 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC5ZpCaF+DvI/Gw4rqc+UHf4g7STSuyS1IUr9doseJWBVNra5fPTZsRTNFGQV+aoVJF4iLOzQSypiWFpKG2bjG9n05VkSGfME62lE9U8x0UPrmtbNfUWE56e4QxmKqq6ielB2zn94brQ8+vWe1Fx2NyPr0XiX0uyp48scVo1G8tkdRQWeIQf8y2q6RFLWBG0kJnuSd5AabmyUbo/lWMG40+TQGwr2+A5YXUTWgovsFVtIoqo7tpv4ZXrcKA/BVAFUbJwZS4F+sY0W2AtcVjB5RZotjtmVoClVacxpJagK0FUpmLz/MopAELsbDPG4E4CvqsurPrlSxqeIW25rLfXHWfCl7cUhsRcWl7TiDNE/T1t0nQiK1iC/SaSI2wld28uRIfF+kEbbLICozFC1aXehpzwoRNQafTKwixkkI+LioEio1WxS6KPDiT+mcH93IGtH4U6QnEDbOMIZ4xXzdaM54chYgcOl387eU9Rv14c9b68GzZVSBBbFYpykQ6bCJ43FU= user@linuxprac.box.office.basealt.ru
       5 
    
    • Скрипт ssh-copy-id просто логинится на удалённый хост и дописывает ключ в конец файла .ssh/authorized_keys

Регистрация ssh-ключей на GitHub

Д/З

  1. Обеспечить доступ к Linux-системе, которую можно устанавливать произвольное ПО из репозитория. Если таковой нет, обратиться к FrBrGeorge

  2. Завести публичный git-репозиторий и зарегистрировать его в качестве комментария к этому issue

    • Вслучае GitHub вам понадобится сгенерировать и зарегистрировать ssh-ключ

Где делать Д/З

LecturesCMC/LinuxApplicationDevelopment2021/00_GitSsh (последним исправлял пользователь FrBrGeorge 2021-09-24 13:10:19)