Как использовать SSH-ключ только с SCP, а не с SSH и т.д.?

Вопрос или проблема

Мне нужно было выполнить некоторые операции SCP с помощью скриптов, поэтому я использовал ssh-keygen и ssh-copy-id, чтобы запускать их без ввода пароля каждый раз.

Однако теперь SSH также работает без пароля: я просто могу подключиться к серверу, и он автоматически меня авторизует. Мне не нужно, чтобы сам SSH работал без пароля, поэтому в целях безопасности я хотел бы отключить это.

Наверняка я что-то упускаю, но как сделать так, чтобы общий ключ использовался только для SCP, а SSH по-прежнему требовал пароль?

Ответ или решение

Чтобы использовать SSH-ключ только с SCP и не разрешать аутентификацию без пароля для SSH, необходимо создать ключи так, чтобы SCP использовал их, но чтобы SSH продолжал требовать пароль. Для достижения этого результата можно использовать следующие подходы:

  1. Изменение конфигурации SSH: Отключите аутентификацию с помощью ключей SSH при доступе к серверу, добавив определённые параметры в файл конфигурации SSH.

  2. Использование отдельного пользователя для SCP: Создайте отдельного пользователя на сервере для операций SCP, который будет иметь доступ по ключу, оставив SSH без изменения для стандартного пользователя.

  3. Настройка файла конфигурации SSH:

    Вам понадобится изменить файл конфигурации SSH на клиенте (~/.ssh/config). Добавьте следующие строки, чтобы использовать ключ только для SCP:

    Host your-server-alias
       HostName your.server.com
       User your-username
       IdentityFile ~/.ssh/your_private_key
       PreferredAuthentications publickey

    Здесь your-server-alias – это псевдоним, который вы можете использовать для доступа к серверу через SCP или SSH. Строка PreferredAuthentications publickey указывает, что при подключении через SSH этот ключ использовать не следует.

  4. Реализация ограничения на уровне сервера:

    Если вы имеете контроль над сервером, в файле конфигурации SSH сервера /etc/ssh/sshd_config можно настроить ограничения:

    • Вы можете использовать Match для определения правил, которые применяются к определенным пользователям или группам. Например:
    Match User your-username
       PasswordAuthentication yes
       PubkeyAuthentication no

    Это позволит требовать пароль для пользователя your-username, но не будет разрешать аутентификацию по ключам.

  5. Отключение аутентификации по ключам:

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

    chmod 600 ~/.ssh/your_private_key

    Однако это приведет к тому, что SCP также не сможет использовать этот ключ.

  6. Командная строка SCP:

    После всех этих настроек вы сможете использовать SCP с ключом, как обычно:

    scp -i ~/.ssh/your_private_key localfile your-username@your.server.com:/path/to/remote/file

Таким образом, можно организовать систему, при которой SCP будет использовать SSH-ключи, а SSH по-прежнему будет требовать ввода пароля. Не забудьте протестировать все изменения перед тем, как делать их в продакшене, чтобы избежать блокировки доступа.

Оцените материал
Добавить комментарий

Капча загружается...