Настройка клиента OpenSSH
В этой теме рассматривается подключение к серверам OpenSSH с помощьюssh,scpиsftp, а также файлы конфигурации на стороне клиента и управление ключами SSH. Настройку на стороне сервера см. в Настройке сервера OpenSSH. Общие сведения о протоколе SSH см. в Об SSH и OpenSSH.
|
Статус: работа в процессе. Содержимое этого раздела находится на рассмотрении и обновляется. Отзывы приветствуются! |
|
Убедитесь, что у вас установлены соответствующие пакеты
Чтобы подключиться к серверу OpenSSH с клиентской машины, у вас должен быть установлен пакет openssh-clients. Если он ещё не установлен, выполните:
|
Файлы конфигурации
Информация о конфигурации SSH для конкретного пользователя хранится в ~/.ssh/ в домашнем каталоге пользователя, как описано в Файлах конфигурации для конкретного пользователя ниже. Об общесистемном файле конфигурации клиента /etc/ssh/ssh_config и файлах конфигурации сервера см. Общесистемных файлах конфигурации в Настройке сервера OpenSSH.
| Файл | Описание |
|---|---|
|
Содержит список авторизованных открытых ключей для серверов. Когда клиент подключается к серверу, сервер аутентифицирует клиента, проверяя его подписанный открытый ключ, хранящийся в этом файле. |
|
Содержит закрытый ключ ECDSA пользователя. |
|
Открытый ключ ECDSA пользователя. |
|
Закрытый ключ RSA, используемый ssh. |
|
Открытый ключ RSA, используемый ssh. |
|
Закрытый ключ EdDSA, используемый ssh. |
|
Открытый ключ EdDSA, используемый ssh. |
|
Содержит ключи хостов серверов SSH, к которым обращался пользователь. Этот файл очень важен для обеспечения того, что клиент SSH подключается к правильному серверу SSH. |
Информацию о различных директивах, которые можно использовать в файлах конфигурации SSH, см. на страницах руководства ssh_config(5) и sshd_config(5).
Использование утилиты ssh
Утилита ssh позволяет войти на удалённую машину и выполнять там команды. Это безопасная замена программам rlogin, rsh и telnet.
Подобно команде telnet, войдите на удалённую машину с помощью следующей команды:
$ ssh hostname
Например, чтобы войти на удалённую машину с именем penguin.example.com, введите в приглашении оболочки следующее:
$ ssh penguin.example.com
Это выполнит вход с тем же именем пользователя, которое вы используете на локальной машине. Если вы хотите указать другое имя пользователя, используйте команду следующего вида:
$ ssh username@hostname
Например, чтобы войти на penguin.example.com как USER, введите:
$ ssh USER@penguin.example.com
При первом установлении соединения вам будет показано сообщение, подобное этому:
The authenticity of host 'penguin.example.com (192.0.2.1)' can't be established. ED25519 key fingerprint is SHA256:ZYEUaevOAEASvYjm58PiPdMebxhhlaTZBjTMr/N2I3c. This key is not known by any other names. Are you sure you want to continue connecting (yes/no/[fingerprint])?
Пользователям всегда следует проверять, правильный ли отпечаток, прежде чем отвечать на вопрос в этом диалоге. Пользователь может попросить администратора сервера подтвердить, что ключ правильный. Это следует делать безопасным и заранее согласованным способом. Если у пользователя есть доступ к ключам хоста сервера, отпечаток можно проверить с помощью команды ssh-keygen следующим образом:
$ ssh-keygen -l -f /etc/ssh/ssh_host_ed25519_key.pub
256 SHA256:ZYEUaevOAEASvYjm58PiPdMebxhhlaTZBjTMr/N2I3c root@penguin.example.com (ED25519)
Введите yes, чтобы принять ключ и подтвердить соединение. Вы увидите уведомление о том, что сервер добавлен в список известных хостов, и запрос на ввод пароля:
Warning: Permanently added 'penguin.example.com' (ED25519) to the list of known hosts. USER@penguin.example.com's password:
|
Обновление ключа хоста сервера SSH
Если ключ хоста сервера SSH изменился, клиент уведомляет пользователя о том, что соединение не может быть продолжено, пока ключ хоста сервера не будет удалён из файла Чтобы удалить ключ из файла
|
После ввода пароля вам будет предоставлено приглашение оболочки удалённой машины.
В качестве альтернативы программу ssh можно использовать для выполнения команды на удалённой машине без входа в приглашение оболочки:
$ ssh username@hostname command
Например, файл /etc/redhat-release предоставляет информацию о версии Fedora. Чтобы просмотреть содержимое этого файла на penguin.example.com, введите:
$ ssh USER@penguin.example.com cat /etc/redhat-release
USER@penguin.example.com's password:
Fedora release 44 (Forty Four)
После ввода правильного пароля будет отображено имя пользователя, и вы вернётесь в приглашение локальной оболочки.
Создание и управление ключами SSH
Чтобы иметь возможность использовать ssh, scp или sftp для подключения к серверу, создайте пару ключей авторизации, выполнив шаги ниже. Обратите внимание, что ключи должны создаваться для каждого пользователя отдельно.
Fedora по умолчанию использует SSH Protocol 2 (дополнительную информацию см. в Версиях протокола). При создании новых ключей рекомендуется тип ключа Ed25519; RSA и ECDSA также поддерживаются для совместимости со старыми системами.
|
Не создавайте пары ключей от имени root
Если вы выполните эти шаги от имени |
|
Создайте резервную копию каталога ~/.ssh/
Если вы переустанавливаете систему и хотите сохранить ранее созданные пары ключей, создайте резервную копию каталога |
Создание пары ключей RSA
Чтобы создать пару ключей RSA для версии 2 протокола SSH, выполните следующие шаги:
-
Создайте пару ключей RSA, введя в приглашении оболочки следующее:
$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/USER/.ssh/id_rsa): -
Нажмите kbd:[Enter], чтобы подтвердить расположение по умолчанию
~/.ssh/id_rsaдля созданного ключа. -
Введите парольную фразу и подтвердите её, введя ещё раз, когда будет предложено. Из соображений безопасности избегайте использования того же пароля, который вы используете для входа в свою учётную запись.
После этого вам будет показано сообщение, подобное этому:
Your identification has been saved in /home/USER/.ssh/id_rsa Your public key has been saved in /home/USER/.ssh/id_rsa.pub The key fingerprint is: SHA256:y6f0DGlHe28YWotEypnhfk3WLYQ5TgaQwoSlOFwmmm0 USER@penguin.example.com The key's randomart image is: +---[RSA 3072]----+ | E. | | . . | | o . | | . .| | S . . | | + o o ..| | * * +oo| | O +..=| | o* o.| +----[SHA256]-----+
-
По умолчанию права доступа к каталогу
~/.ssh/устанавливаются вrwx------или700в восьмеричной нотации. Это делается для того, чтобы только USER мог просматривать содержимое. При необходимости это можно подтвердить следующей командой:$ ls -ld ~/.ssh drwx------. 2 USER USER 54 Nov 25 16:56 /home/USER/.ssh/ -
Чтобы скопировать открытый ключ на удалённую машину, выполните команду следующего формата:
$ ssh-copy-id user@hostnameЭто скопирует последний изменённый открытый ключ
~/.ssh/id*.pub, если он ещё не установлен. В качестве альтернативы укажите имя файла открытого ключа следующим образом:$ ssh-copy-id -i ~/.ssh/id_rsa.pub user@hostnameЭто скопирует содержимое
~/.ssh/id_rsa.pubв файл~/.ssh/authorized_keysна машине, к которой вы хотите подключиться. Если файл уже существует, ключи добавляются в его конец.
Создание пары ключей ECDSA
Чтобы создать пару ключей ECDSA для версии 2 протокола SSH, выполните следующие шаги:
-
Создайте пару ключей ECDSA, введя в приглашении оболочки следующее:
$ ssh-keygen -t ecdsa Generating public/private ecdsa key pair. Enter file in which to save the key (/home/USER/.ssh/id_ecdsa): -
Нажмите kbd:[Enter], чтобы подтвердить расположение по умолчанию
~/.ssh/id_ecdsaдля созданного ключа. -
Введите парольную фразу и подтвердите её, введя ещё раз, когда будет предложено. Из соображений безопасности избегайте использования того же пароля, который вы используете для входа в свою учётную запись.
После этого вам будет показано сообщение, подобное этому:
Your identification has been saved in /home/USER/.ssh/id_ecdsa Your public key has been saved in /home/USER/.ssh/id_ecdsa.pub The key fingerprint is: SHA256:y6f0DGlHe28YWotEypnhfk3WLYQ5TgaQwoSlOFwmmm0 USER@penguin.example.com The key's randomart image is: +---[ECDSA 256]---+ | .+ +o | | . =.o | | o o + ..| | + + o +| | S o o oE.| | + oo+.| | + o | | | | | +----[SHA256]-----+
-
По умолчанию права доступа к каталогу
~/.ssh/устанавливаются вrwx------или700в восьмеричной нотации. Это делается для того, чтобы только USER мог просматривать содержимое. При необходимости это можно подтвердить следующей командой:$ ls -ld ~/.ssh drwx------. 2 USER USER 54 Nov 25 16:56 /home/USER/.ssh/ -
Чтобы скопировать открытый ключ на удалённую машину, выполните команду следующего формата:
$ ssh-copy-id USER@hostnameЭто скопирует последний изменённый открытый ключ
~/.ssh/id*.pub, если он ещё не установлен. В качестве альтернативы укажите имя файла открытого ключа следующим образом:$ ssh-copy-id -i ~/.ssh/id_ecdsa.pub USER@hostnameЭто скопирует содержимое
~/.ssh/id_ecdsa.pubв~/.ssh/authorized_keysна машине, к которой вы хотите подключиться. Если файл уже существует, ключи добавляются в его конец.
Создание пары ключей Ed25519
Этот раздел является заготовкой. Ed25519 — текущий рекомендуемый вариант по умолчанию для новых ключей: он создаёт ключи меньшего размера, чем RSA или ECDSA, оставаясь при этом очень безопасным и быстрым. Этот раздел должен повторять шаги для RSA/ECDSA выше с использованием ssh-keygen -t ed25519, включая расположение ключа по умолчанию (~/.ssh/id_ed25519) и использование ssh-copy-id.
|
См. Настройку ssh-agent ниже, чтобы узнать, как настроить систему для запоминания парольной фразы.
|
Никогда не делитесь своим закрытым ключом
Закрытый ключ предназначен только для вашего личного использования, и важно никогда никому его не передавать. |
Настройка ssh-agent
Чтобы сохранить свою парольную фразу, чтобы не вводить её каждый раз при установлении соединения с удалённой машиной, вы можете использовать агент аутентификации ssh-agent.
Чтобы сохранить свою парольную фразу для определённого приглашения оболочки, используйте следующую команду:
$ ssh-add
Enter passphrase for /home/USER/.ssh/id_rsa:
Обратите внимание, что при выходе из системы ваша парольная фраза будет забыта. Вы должны выполнять эту команду каждый раз при входе в виртуальную консоль или окно терминала.
Файл конфигурации клиента SSH (~/.ssh/config)
Этот раздел является заготовкой и не рассматривается в исходной теме. В нём должен быть описан файл ~/.ssh/config для конкретного пользователя (а также общесистемный /etc/ssh/ssh_config), включая блоки/псевдонимы Host, общие параметры для конкретного хоста, такие как HostName, User, Port и IdentityFile, директиву ProxyJump для промежуточных хостов и глобальные значения по умолчанию, такие как ServerAliveInterval.
|
Использование утилиты scp
scp можно использовать для передачи файлов между машинами через безопасное шифрованное соединение. По своей конструкции он очень похож на rcp.
Чтобы передать локальный файл на удалённую систему, используйте команду следующего вида:
$ scp localfile username@hostname:remotefile
Например, если вы хотите передать taglist.vim на удалённую машину с именем penguin.example.com, введите в приглашении оболочки следующее:
$ scp taglist.vim USER@penguin.example.com:.vim/plugin/taglist.vim
USER@penguin.example.com's password:
taglist.vim 100% 144KB 144.5KB/s 00:00
Можно указать сразу несколько файлов. Чтобы передать содержимое .vim/plugin/ в тот же каталог на удалённой машине penguin.example.com, введите следующую команду:
$ scp .vim/plugin/* USER@penguin.example.com:.vim/plugin/
USER@penguin.example.com's password:
closetag.vim 100% 13KB 12.6KB/s 00:00
snippetsEmu.vim 100% 33KB 33.1KB/s 00:00
taglist.vim 100% 144KB 144.5KB/s 00:00
Чтобы передать удалённый файл в локальную систему, используйте следующий синтаксис:
$ scp username@hostname:remotefile localfile
Например, чтобы загрузить файл конфигурации .vimrc с удалённой машины, введите:
$ scp USER@penguin.example.com:.vimrc .vimrc
USER@penguin.example.com's password:
.vimrc 100% 2233 2.2KB/s 00:00
|
Протокол SCP плохо спроектирован и может вызывать неожиданные результаты. В прошлом он был источником нескольких CVE, когда вредоносный сервер мог перезаписать файлы в локальной файловой системе при загрузке файлов. Рекомендуется использовать SFTP, когда это возможно. Дополнительную информацию см. в следующем разделе. |
Использование утилиты sftp
Утилиту sftp можно использовать для открытия безопасного интерактивного сеанса SFTP. По своей конструкции она похожа на ftp, за исключением того, что использует безопасное шифрованное соединение.
Чтобы подключиться к удалённой системе, используйте команду следующего вида:
$ sftp username@hostname
Например, чтобы войти на удалённую машину с именем penguin.example.com под именем пользователя USER, введите:
$ sftp USER@penguin.example.com
USER@penguin.example.com's password:
Connected to penguin.example.com.
sftp>
После ввода правильного пароля вам будет предоставлено приглашение. Утилита sftp принимает набор команд, подобных тем, что используются ftp (см. Подборку доступных команд sftp).
| Команда | Описание |
|---|---|
ls [directory] |
Вывести содержимое удалённого directory. Если не указан, по умолчанию используется текущий рабочий каталог. |
cd directory |
Сменить удалённый рабочий каталог на directory. |
|
Создать удалённый directory. |
|
Удалить удалённый directory. |
|
Передать |
|
Передать |
Полный список доступных команд см. на странице руководства sftp(1).
Сертификаты SSH
Создание пользовательских сертификатов и настройка IdentityFile для их предъявления рассматриваются в рамках сценария использования аутентификации по сертификату SSH в Продвинутом использовании SSH.
|
Дополнительные ресурсы
Дополнительную информацию о том, как подключиться к серверу OpenSSH из Fedora, см. в перечисленных ниже ресурсах.
-
ssh(1) — страница руководства для клиентского приложения ssh предоставляет полный список доступных параметров командной строки и поддерживаемых файлов и каталогов конфигурации. -
scp(1) — страница руководства для утилитыscpпредоставляет более подробное описание этой утилиты и её использования. -
sftp(1) — страница руководства для утилиты sftp. -
ssh-keygen(1) — страница руководства для утилиты ssh-keygen подробно описывает, как использовать её для создания, управления и преобразования ключей аутентификации, используемых ssh. -
ssh_config(5) — страница руководства с именемssh_configописывает доступные параметры конфигурации клиента SSH.
Ресурсы на стороне сервера и информацию о протоколе SSH см. в Настройке сервера OpenSSH и Об SSH и OpenSSH.
Want to help? Learn how to contribute to Fedora Docs ›