С чего начать Первые шаги трек · 15 ступеней
Linux Labs

ssh, scp — подключение и копирование по SSH

3 мин OpenSSH 9.6

Клиент для входа и копирования файлов по SSH; алиасы хостов в ~/.ssh/config убирают повтор параметров подключения.

Шпаргалка

6 команд Версия для печати
  • ssh user@host подключиться
  • ssh -p 2222 user@host нестандартный порт
  • scp file user@host:/path/ скопировать файл на сервер
  • ssh -L 8080:localhost:80 host локальный туннель
  • ssh -J bastion host подключиться через бастион
  • ssh-keygen -R host сбросить сохранённый host key

Обзор

ssh — клиент для защищённого подключения к серверу (по умолчанию порт 22). Серверная часть — sshd; аутентификация — по ключам (см. «SSH-ключи»).

bash
ssh user@host                     # подключиться
ssh -p 2222 user@host             # нестандартный порт
ssh user@host 'uptime; df -h'     # выполнить команду и выйти
ssh -v user@host                  # подробная отладка подключения

Ключи

7

Чтобы не повторять параметры — алиасы хостов в ~/.ssh/config:

Host web
    HostName 192.168.1.10
    User deploy
    Port 2222
    IdentityFile ~/.ssh/id_ed25519

Теперь просто ssh web. Полезно: ServerAliveInterval 60 (держать сессию), ProxyJump bastion (через бастион).

Ключ Что делает Пример
-p port ssh/scp — подключиться к нестандартному порту. ssh -p 2222 user@host
-L local:host:hostport ssh — локальный туннель, проброс порта с сервера на свою машину. ssh -L 8080:localhost:80 user@host
-r scp — скопировать каталог рекурсивно. scp -r dir user@host:/path/
-D port ssh — поднять SOCKS-прокси через сервер. ssh -D 1080 user@host
-J host ssh — подключиться через промежуточный хост (бастион). ssh -J bastion user@internal-host
-v ssh — подробный вывод отладки подключения; -vvv для максимума деталей. ssh -v user@host
-i keyfile ssh/scp — подключиться конкретным приватным ключом. ssh -i ~/.ssh/deploy_key user@host

Ничего не найдено. Попробуй запрос короче.

Рецепты

1

Копирование и туннели

bash
# копирование файлов
scp file user@host:/path/         # на сервер
scp user@host:/path/file .        # с сервера
scp -r dir user@host:/path/       # каталог
rsync -avz dir/ user@host:/path/  # эффективнее для больших/повторных (см. rsync)

# проброс портов
ssh -L 8080:localhost:80 user@host    # локальный 8080 → удалённый 80
ssh -D 1080 user@host                 # SOCKS-прокси через сервер
ssh -J bastion user@internal-host     # прыжок через бастион

Неполадки

4

Permission denied (publickey)

Ключа нет на сервере или права на клиенте/сервере неверные. Проверь ssh -v, наличие ключа (ssh-add -l), ~/.ssh/authorized_keys на сервере (см. «SSH-ключи»).

Host key verification failed

Ключ хоста изменился (переустановка/смена IP). Если ожидаемо — убери старую запись: ssh-keygen -R host. Если нет — это может быть MITM, проверь.

Connection timed out vs refused

timed out — не дошли (файрвол/маршрут/не та сеть); refused — дошли, но порт закрыт (sshd не запущен / другой порт).

Сессия рвётся по таймауту

ServerAliveInterval 60 в конфиге клиента.

Термины

1
known_hosts
Клиентский список доверенных ключей SSH-серверов и их имён/адресов. Ещё встречается в: ssh-keyscan, Ansible: инвентарь, модули и разовые команды

См. также

  • sshd — Сервер SSH — удалённый доступ по ключам, конфиг и хардненинг.
  • ssh-keys — Генерация ключей, authorized_keys, ssh-agent, права на файлы .ssh.
  • rsync — Эффективное копирование и бэкап — только изменения, по сети и локально.
Загрузка…