Blame
253b06 | Mayekkuzu | 2024-11-12 19:19:16 | 1 | ![](/Linux/System/SSH/ssh_title.jpg) |
2 | ||||
9219a8 | Mayekkuzu | 2024-12-17 20:35:20 | 3 | **SSH** (**Secure Shell**) - протокол который поможет тебе удаленно управлять тачкой, передавать файлы туда и оттуда, использовать как туннель. Эдакая командная строчка, но только по ту сторону сетевого кабеля. Поддерживает внушительное количество алгоритмов шифрования, причем пароль в момент авторизации так же шифруется. Впрочем как и туннелирование трафика. Есть возможность сжатия трафика, но это скорее уже технические внутренние тонкости, которые врядли тебе пригодятся, хотя кто знает? Требует запущенного демона на стороне управляемого нами удаленно сервиса/службы sshd в фоне. По умолчанию использует 22 порт TCP. |
253b06 | Mayekkuzu | 2024-11-12 19:19:16 | 4 | |
9219a8 | Mayekkuzu | 2024-12-17 20:35:20 | 5 | В Linux в 99% случаев утилита присутствует, устанавливать ничего не нужно. Стал альтернативой допотопному незащищенному telnet, потому как telnet отправляет и принимает данные в открытом виде. На данный момент широкое распространение получил SSHv2, но в простонародье он все так же именуется SSH. Для удобства работы из под Windows можно использовать широко распостраненный putty. В Microsoft Store присутствует утилита terminal, в которую включена поддержка SSH. Есть возможность авторизации без ввода пароля сгенерировав ключ и прописав его в `~/.ssh/known\_hosts/`. Сделать это без головной боли тебе поможет утилита ssh-copy-id. Но можно и ручками. |
253b06 | Mayekkuzu | 2024-11-12 19:19:16 | 6 | |
9219a8 | Mayekkuzu | 2024-12-17 20:35:20 | 7 | Имеет кучку утилит, позволяющих комфортно работать с удаленной машиной вне зависимости от типа операционной системы, которую ты используешь. Для передачи файлов и папок с файлами тебе поможет утилита scp. Если хочется работать с файлами более высокоуровнево - тебе в помощь [Filezilla](https://filezilla-project.org/) (Linux/Windows) или [WinSCP](https://winscp.net/eng/download.php) (Windows). Для винды кстати есть инструментарий, позволяющий подключать удаленную папку как диск и работать с ним прям из стандартного explorer будто это флешка, но требует установки ряда специфического ПО. Так же есть реализации серверов SSH для Windows, но используются крайне редко. Для таких целей лучше использовать WinRM. MacOS умеет в ssh с коробки. |
253b06 | Mayekkuzu | 2024-11-12 19:19:16 | 8 | |
9 | ## Начало работы | |||
10 | Базовые вещи которые надо знать каждому админу - как этим всем добром пользоваться. | |||
11 | ### Подключение к удаленной машине | |||
12 | Подключение производится командой | |||
13 | ```ssh user@address``` | |||
14 | Подключение пользователя user используя ssh к тачке address используя стандартный ssh порт. Если порт используется другой, то нужно использовать параметр -p | |||
15 | ```ssh user@address -p 2222``` | |||
16 | ### Подключение к удаленной машине по ключу | |||
17 | Вводить пароль каждый раз иногда неудобно, поэтому нужно сгенерировать пару ключей на нашей домашней машинке чтобы авторизоваться без пароля. Этот метод считается самым защищенным, потому что ключ практически невозможно подобрать. Типов ключей несколько, по умолчанию RSA, но самый защищённый считается ed25519. Используем его | |||
18 | ```ssh-keygen -t ed25519``` | |||
19 | По умолчанию пара ключей сохраняется в домашней папке пользователя: | |||
20 | - `~/.ssh/id_ed25519` - секретный ключ | |||
21 | - `~/.ssh/id_ed25519.pub` - публичный ключ | |||
22 | Важное уточнение: в паре ключей используется пассфраза. Это пароль который защищает ключ. Если его указать, то нужно будет вводить пароль при подключении по ключу. Если же не указать - пароль запрашиваться не будет. Теперь можно экспортировать ключик на удаленную машину. Используем команду: | |||
9219a8 | Mayekkuzu | 2024-12-17 20:35:20 | 23 | ``` |
24 | ssh-copy-id user@address | |||
25 | ``` | |||
253b06 | Mayekkuzu | 2024-11-12 19:19:16 | 26 | Утилитка предоставит нам информацию о том какой фаил ключа будет использован, покажет фингерпринт ключа и спросит подтверждения: |
27 | ||||
9219a8 | Mayekkuzu | 2024-12-17 20:35:20 | 28 | `mayekkuzu@Repka-Pi:~$ ssh-copy-id mayekkuzu@192.168.111.100 /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/mayekkuzu/.ssh/id_ed25519.pub" The authenticity of host '192.168.111.100 (192.168.111.100)' can't be established. ECDSA key fingerprint is SHA256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /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 mayekkuzu@192.168.111.100's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh mayekkuzu@192.168.111.100'" and check to make sure that only the key(s) you wanted were added.` |
253b06 | Mayekkuzu | 2024-11-12 19:19:16 | 29 | |
30 | После этого можно подключаться без пароля. В настройках SSH сервера можно отключить вход по паролю. Не забываем перезагрузить сервер SSH на удаленной машине. | |||
31 | ||||
32 | ### Безопасность использования: | |||
33 | Данные инструкции имеют рекомендательный характер, действуй по своему усмотрению | |||
34 | - Использование нестандартного порта и логина. Поскольку имеет место быть использование SSH который доступен через интернет (VPS/VDS провайдеры например), часто по стандартному 22 порту будут попытки ботов авторизоваться для своих злоумышленнических дел. Рекомендуется не использовать логины типа user/admin/root. По возможности порт 22 назначить на любой свободный. Риск есть, но уже в меньшей степени - Запретить авторизацию root пользователя. В файле `/etc/ssh/sshd_config` изменяем параметр `PermitRootLogin` с `yes` на `no` | |||
9219a8 | Mayekkuzu | 2024-12-17 20:35:20 | 35 | - По возможности запретить вообще вход по паролю. Параметр `PubkeyAuthentication` ставим `yes`, а `PasswordAuthentication` на `no`. Так же стоит отключить вход по пустому паролю. Да, такое тоже бывает! Параметр `PermitEmptyPasswords` должен быть `no`. - Если нет возможности использовать ключи, обезопасить сервер можно программой fail2ban. Ознакомься со статьей |