Настройка клиента OpenSSH

Rowan Puttergill Last review: 2026-06-12
В этой теме рассматривается подключение к серверам OpenSSH с помощью ssh, scp и sftp, а также файлы конфигурации на стороне клиента и управление ключами SSH. Настройку на стороне сервера см. в Настройке сервера OpenSSH. Общие сведения о протоколе SSH см. в Об SSH и OpenSSH.

Статус: работа в процессе. Содержимое этого раздела находится на рассмотрении и обновляется. Отзывы приветствуются!

Убедитесь, что у вас установлены соответствующие пакеты

Чтобы подключиться к серверу OpenSSH с клиентской машины, у вас должен быть установлен пакет openssh-clients. Если он ещё не установлен, выполните:

---
$ sudo dnf install openssh-clients
---

Файлы конфигурации

Информация о конфигурации SSH для конкретного пользователя хранится в ~/.ssh/ в домашнем каталоге пользователя, как описано в Файлах конфигурации для конкретного пользователя ниже. Об общесистемном файле конфигурации клиента /etc/ssh/ssh_config и файлах конфигурации сервера см. Общесистемных файлах конфигурации в Настройке сервера OpenSSH.

Table 1. Файлы конфигурации для конкретного пользователя
Файл Описание

~/.ssh/authorized_keys

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

~/.ssh/id_ecdsa

Содержит закрытый ключ ECDSA пользователя.

~/.ssh/id_ecdsa.pub

Открытый ключ ECDSA пользователя.

~/.ssh/id_rsa

Закрытый ключ RSA, используемый ssh.

~/.ssh/id_rsa.pub

Открытый ключ RSA, используемый ssh.

~/.ssh/id_ed25519

Закрытый ключ EdDSA, используемый ssh.

~/.ssh/id_ed25519.pub

Открытый ключ EdDSA, используемый ssh.

~/.ssh/known_hosts

Содержит ключи хостов серверов 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, введите:

При первом установлении соединения вам будет показано сообщение, подобное этому:

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/known_hosts. Однако перед этим свяжитесь с системным администратором сервера SSH, чтобы убедиться, что сервер не скомпрометирован.

Чтобы удалить ключ из файла ~/.ssh/known_hosts, выполните команду следующим образом:

$ ssh-keygen -R penguin.example.com
# Host penguin.example.com found: line 15
/home/USER/.ssh/known_hosts updated.
Original contents retained as /home/USER/.ssh/known_hosts.old

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

В качестве альтернативы программу 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

Если вы выполните эти шаги от имени root, только root сможет использовать эти ключи.

Создайте резервную копию каталога ~/.ssh/

Если вы переустанавливаете систему и хотите сохранить ранее созданные пары ключей, создайте резервную копию каталога ~/.ssh/. После переустановки скопируйте его обратно в свой домашний каталог. Эту процедуру можно выполнить для всех пользователей системы, включая root.

Создание пары ключей RSA

Чтобы создать пару ключей RSA для версии 2 протокола SSH, выполните следующие шаги:

  1. Создайте пару ключей RSA, введя в приглашении оболочки следующее:

    $ ssh-keygen -t rsa
    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/USER/.ssh/id_rsa):
  2. Нажмите kbd:[Enter], чтобы подтвердить расположение по умолчанию ~/.ssh/id_rsa для созданного ключа.

  3. Введите парольную фразу и подтвердите её, введя ещё раз, когда будет предложено. Из соображений безопасности избегайте использования того же пароля, который вы используете для входа в свою учётную запись.

    После этого вам будет показано сообщение, подобное этому:

    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]-----+
  4. По умолчанию права доступа к каталогу ~/.ssh/ устанавливаются в rwx------ или 700 в восьмеричной нотации. Это делается для того, чтобы только USER мог просматривать содержимое. При необходимости это можно подтвердить следующей командой:

    $ ls -ld ~/.ssh
    drwx------. 2 USER USER 54 Nov 25 16:56 /home/USER/.ssh/
  5. Чтобы скопировать открытый ключ на удалённую машину, выполните команду следующего формата:

    $ 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, выполните следующие шаги:

  1. Создайте пару ключей ECDSA, введя в приглашении оболочки следующее:

    $ ssh-keygen -t ecdsa
    Generating public/private ecdsa key pair.
    Enter file in which to save the key (/home/USER/.ssh/id_ecdsa):
  2. Нажмите kbd:[Enter], чтобы подтвердить расположение по умолчанию ~/.ssh/id_ecdsa для созданного ключа.

  3. Введите парольную фразу и подтвердите её, введя ещё раз, когда будет предложено. Из соображений безопасности избегайте использования того же пароля, который вы используете для входа в свою учётную запись.

    После этого вам будет показано сообщение, подобное этому:

    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]-----+
  4. По умолчанию права доступа к каталогу ~/.ssh/ устанавливаются в rwx------ или 700 в восьмеричной нотации. Это делается для того, чтобы только USER мог просматривать содержимое. При необходимости это можно подтвердить следующей командой:

    $ ls -ld ~/.ssh
    drwx------. 2 USER USER 54 Nov 25 16:56 /home/USER/.ssh/
  5. Чтобы скопировать открытый ключ на удалённую машину, выполните команду следующего формата:

    $ 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).

Table 2. Подборка доступных команд sftp
Команда Описание

ls [directory]

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

cd directory

Сменить удалённый рабочий каталог на directory.

mkdir directory

Создать удалённый directory.

rmdir directory

Удалить удалённый directory.

put localfile [`remotefile`_]

Передать localfile на удалённую машину.

get remotefile [`localfile`_]

Передать remotefile с удалённой машины.

Полный список доступных команд см. на странице руководства 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.