Skip to content
  • Категории
  • Последние
  • Метки
  • Популярные
  • World
  • Пользователи
  • Группы
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • По умолчанию (Darkly)
  • Нет скина
Collapse

База знаний (кластер NBICS)

  1. Главная
  2. Команды BASH
  3. Bash - работа с SSH

Bash - работа с SSH

Запланировано Прикреплена Закрыта Перенесена Команды BASH
5 Сообщения 1 Posters 35 Просмотры
  • Сначала старые
  • Сначала новые
  • По количеству голосов
Ответить
  • Ответить, создав новую тему
Авторизуйтесь, чтобы ответить
Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
  • A Не в сети
    A Не в сети
    Admin
    написал в отредактировано
    #1

    Содержание

    1 ответ Последний ответ
    0
    • A Не в сети
      A Не в сети
      Admin
      написал в отредактировано Admin
      #2

      Передача каталогов и файлов через SSH


      Вот актуальный на 2025 год и максимально полный список команд для передачи файлов и папок по SSH (все работают в Linux, macOS и Windows с OpenSSH/WSL).

      1. Классический scp (надёжно, но медленнее)

      # С удалённого → на локальный
      scp -r -P 2222 user@203.0.113.10:/home/user/backup/ ./backup/
      
      # С локального → на удалённый
      scp -r -P 2222 ./Documents/ user@203.0.113.10:/home/user/
      
      # Через сжатие (ускоряет на медленных каналах)
      scp -r -C -P 2222 big_folder/ user@server:/tmp/
      

      2. rsync по SSH — самый быстрый и умный способ

      # С удалённого → на локальный
      rsync -avz --progress -e "ssh -p 2222" user@203.0.113.10:/home/user/backup/ ./backup/
      
      # С локального → на удалённый
      rsync -avz --progress --delete ./Music/ user@203.0.113.10:/home/user/Music/
      
      # Только новые/изменённые файлы + сжатие + удаление лишнего
      rsync -avz --delete -e "ssh -p 2222" /home/user/bigdata/ user@server:/mnt/backup/
      

      Ключи:

      • -a — архивный режим (сохраняет права, владельца, время)
      • -v — подробно
      • -z — сжатие
      • --progress — прогресс-бар
      • --delete — удалить на приёмнике то, чего нет в источнике

      3. tar + ssh — передача огромных папок одной командой (очень быстро)

      # С удалённого → на локальный (без промежуточных файлов)
      tar -czf - /home/user/big_folder/ | ssh user@local "cat > ~/big_folder.tar.gz"
      
      # С локального → на удалённый (ещё быстрее)
      tar -czf - ./Videos/ | ssh -p 2222 user@203.0.113.10 "cat > /home/user/Videos.tar.gz"
      
      # Или распаковывать сразу на принимающей стороне
      tar -czf - ./Documents/ | ssh user@server "tar -xzf - -C /home/user/"
      

      4. Монтирование удалённой папки как локальной (sshfs) — удобно для постоянной работы

      # Установка
      sudo apt install sshfs
      
      # Примонтировать
      mkdir ~/remote_folder
      sshfs -o reconnect,port=2222 user@203.0.113.10:/home/user/ ~/remote_folder
      
      # Отмонтировать
      fusermount -u ~/remote_folder
      

      5. Быстрые однострочники

      # Скачать всю домашнюю папку пользователя с сервера
      rsync -avz user@server:/home/user/ ./user_backup_$(date +%F)/
      
      # Залить только изменённые фото за сегодня
      rsync -avz --include="*.jpg" --include="*/" --exclude="*" ./Photos/2025/ user@nas:/Photos/
      
      # Синхронизировать два сервера напрямую (без локального диска)
      rsync -avz -e ssh server1:/data/ server2:/data/
      
      # Копировать с прогресс-баром и скоростью
      rsync -av --info=progress2 source/ user@dest:/target/
      

      6. Если нужно обойти ограничения (например, нет rsync на сервере)

      # Через netcat (nc) — супер быстро на локальной сети
      # На принимающей машине:
      nc -l -p 5000 | tar -xzf -
      
      # На отправляющей:
      tar -czf - folder/ | nc 192.168.1.100 5000
      

      Для 99 % задач используйте rsync — он быстрее, умнее и надёжнее scp.

      1 ответ Последний ответ
      0
      • A Не в сети
        A Не в сети
        Admin
        написал в отредактировано
        #3

        Открыть в своём браузере настройки удалённого роутера

        sudo ssh -L 8080:192.168.0.1:80 user@<ip-сервера>
        

        -L - локальный адрес
        8080 - порт в браузере пользователя
        192.168.0.1:80 - пример адреса роутера


        В своём браузере ввести адрес http://localhost:8080

        1 ответ Последний ответ
        0
        • A Не в сети
          A Не в сети
          Admin
          написал отредактировано Admin
          #4

          Как поменять порт SSH с 22 на 2222 (Debian)

          На Debian 13 (Trixie) можно безопасно изменить порт SSH с 22 на 2222, следуя пошаговой инструкции. Рекомендуемый современный способ — создать отдельный файл конфигурации, который не будет перезаписан при обновлении системы.

          Предварительные меры предосторожности

          Прежде чем вносить изменения, выполните следующие действия, чтобы не потерять доступ к серверу:

          • Не закрывайте текущую SSH-сессию, пока не проверите работоспособность нового порта в другой сессии .
          • Проверьте, не занят ли порт 2222 другой службой, выполнив команду: sudo ss -tulpn | grep :2222. Отсутствие вывода означает, что порт свободен .

          Пошаговая инструкция по изменению порта

          1. Создайте файл пользовательской конфигурации

          В Debian 13 (и современных версиях) рекомендуется добавлять изменения в отдельные файлы внутри каталога /etc/ssh/sshd_config.d/, чтобы не редактировать основной файл конфигурации. Это облегчает обновление пакета и управление настройками .

          Откройте терминал и создайте новый файл конфигурации с помощью текстового редактора (например, nano) :

          sudo nano /etc/ssh/sshd_config.d/port.conf
          

          2. Добавьте строку с новым портом

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

          Port 2222
          
          • Совет: Выбирайте порт в диапазоне от 1024 до 65535, чтобы избежать конфликтов с системными службами .

          Сохраните файл и выйдите из редактора (в nano: нажмите Ctrl+X, затем Y для подтверждения и Enter).

          3. Проверьте конфигурацию SSH

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

          sudo sshd -t
          

          Если команда не вывела никаких сообщений, значит, синтаксис верен.

          4. Настройте firewall (Брандмауэр)

          Если на вашем сервере включен брандмауэр (например, ufw), необходимо разрешить трафик на новый порт до перезапуска SSH, иначе соединение будет разорвано .

          • Если используется UFW:

            sudo ufw allow 2222/tcp
            sudo ufw reload
            

            Для проверки правил можно использовать sudo ufw status .

          • Если используются iptables или nftables:
            Добавьте соответствующее правило. Например, для iptables:

            sudo iptables -A INPUT -p tcp --dport 2222 -j ACCEPT
            

            Не забудьте сохранить правила iptables, чтобы они пережили перезагрузку .

          5. Перезапустите службу SSH

          Примените изменения, перезапустив службу SSH. На Debian используется сервис ssh :

          sudo systemctl restart ssh
          

          6. Проверьте подключение на новом порту

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

          ssh -p 2222 ваше_имя_пользователя@ip_адрес_сервера
          

          Если подключение прошло успешно, вы можете использовать сервер как обычно.

          Возможные проблемы и их решение

          • Ошибка "Connection refused":

            • Убедитесь, что вы используете правильный IP-адрес и порт 2222.
            • Проверьте, что правила брандмауэра обновлены и применяются. Временно можно остановить firewall для теста: sudo ufw disable (не забудьте потом включить обратно) .
            • Проверьте, слушает ли SSH новый порт: sudo ss -tulpn | grep ssh .
          • Если доступ потерян:
            Используйте альтернативный способ доступа к серверу (например, через веб-консоль у хостинг-провайдера или IPMI) и верните изменения. Удалите созданный вами файл port.conf и перезапустите SSH: sudo rm /etc/ssh/sshd_config.d/port.conf и sudo systemctl restart ssh .

          Дополнительные рекомендации

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

          sudo ufw delete allow 22/tcp
          

          Обратите внимание, что изменение порта — это лишь один из шагов по усилению безопасности. Рекомендуется также настроить аутентификацию по ключам и отключить вход для пользователя root .

          1 ответ Последний ответ
          0
          • A Не в сети
            A Не в сети
            Admin
            написал отредактировано
            #5

            Как узнать на каком порту слушает SSH


            Узнать, на каком порту слушает SSH, можно несколькими способами. Вот самые надежные и наглядные методы для Debian и других Linux-систем.

            Способ 1: Проверка активных слушающих портов (Самый надежный)

            Этот метод показывает, какие порты в данный момент реально открыты и ожидают подключений.

            Используем ss (современная замена netstat)

            sudo ss -tulpn | grep sshd
            

            Разберем ключи:

            • -t (tcp) — показывать TCP-порты
            • -u (udp) — показывать UDP-порты
            • -l (listening) — только слушающие порты
            • -p (process) — показать процесс, который слушает порт
            • -n (numeric) — не резолвить имена (показывать цифры, работает быстрее)

            Пример вывода:

            tcp   LISTEN 0   128   0.0.0.0:22     0.0.0.0:*    users:(("sshd",pid=1234,fd=3))
            tcp   LISTEN 0   128   [::]:22        [::]:*       users:(("sshd",pid=1234,fd=4))
            

            В этом примере SSH слушает порт 22 на всех интерфейсах (IPv4 и IPv6).

            Если вы меняли порт на 2222, вывод будет таким:

            tcp   LISTEN 0   128   0.0.0.0:2222   0.0.0.0:*    users:(("sshd",pid=1234,fd=3))
            

            Альтернатива с netstat

            Если ss не установлен или вы привыкли к netstat:

            sudo netstat -tulpn | grep sshd
            

            Если netstat не найден, установите его:

            sudo apt install net-tools
            

            Способ 2: Проверка конфигурационного файла

            Этот метод показывает, что написано в конфиге, но не гарантирует, что SSH реально слушает именно эти порты (например, если конфиг содержит ошибку или сервис не перезапущен).

            Основной конфиг

            grep -E "^Port" /etc/ssh/sshd_config
            

            Вывод покажет что-то вроде:

            Port 22
            

            Если строка закомментирована (#Port 22), значит используется значение по умолчанию — порт 22.

            Проверка дополнительных конфигов (Debian 12+)

            В современных версиях Debian настройки могут лежать в отдельных файлах внутри каталога:

            grep -E "^Port" /etc/ssh/sshd_config.d/*.conf
            

            Это покажет все порты, заданные в пользовательских конфигах. Например:

            /etc/ssh/sshd_config.d/port.conf:Port 2222
            

            Способ 3: Просмотр активных SSH-соединений

            Если кто-то уже подключен к серверу, можно увидеть, на каком порту они подключились:

            sudo ss -tunp | grep ESTAB | grep ssh
            

            Или:

            sudo netstat -tunp | grep ESTABLISHED | grep ssh
            

            Способ 4: Использование lsof

            Утилита lsof (list open files) тоже отлично показывает открытые порты:

            sudo lsof -i :22 -sTCP:LISTEN
            

            Замените 22 на любой порт, который хотите проверить. Если порт слушается, вы увидите процесс sshd.

            Или посмотреть все слушающие порты SSH:

            sudo lsof -i -sTCP:LISTEN | grep ssh
            

            Что делать, если порт не совпадает с ожидаемым?

            Если вы изменили порт в конфиге, перезапустили SSH, но ss показывает старый порт:

            1. Проверьте, нет ли синтаксических ошибок в конфиге:

              sudo sshd -t
              

              Если есть ошибки, команда укажет на них.

            2. Проверьте, запущен ли SSH:

              sudo systemctl status ssh
              
            3. Посмотрите логи — там часто пишут, на каких портах запустился SSH:

              sudo journalctl -u ssh | grep "listening on"
              

            Резюме: самый быстрый способ

            Просто запомните эту команду — она сработает в 99% случаев:

            sudo ss -tulpn | grep :22
            

            Замените 22 на предполагаемый порт, если меняли его. Если порт найден, вы увидите строку с LISTEN и процессом sshd.

            1 ответ Последний ответ
            0
            Ответить
            • Ответить, создав новую тему
            Авторизуйтесь, чтобы ответить
            • Сначала старые
            • Сначала новые
            • По количеству голосов


            • Войти

            • Login or register to search.
            Powered by NodeBB Contributors
            • Первое сообщение
              Последнее сообщение
            0
            • Категории
            • Последние
            • Метки
            • Популярные
            • World
            • Пользователи
            • Группы