- Как мне выйти из SSH-соединения?
- 7 ответов 7
- Escape-символ SSH и последовательность отключения
- Другие последовательности побега
- Как выйти из SSH-соединения?
- 8 ответов
- Символ SSH Escape и последовательность разъединения
- Другие escape-последовательности
- Как мне выйти из SSH-соединения?
- Escape-символ SSH и последовательность отключения
- Другие последовательности побега
- Как пользоваться SSH
- Базовый синтаксис
- Опции команды SSH
- Настройка сервера SSH
- Порт ssh
- Протокол SSH
- Рут доступ
- Доступ только определенного пользователя к SSH
- Выполнение X11 приложений
- Использование SSH
- Подключение к серверу
- Выполнить команду
- Выполнить локальный скрипт
- Бекап на удаленный сервер и восстановление
- Аутентификация без пароля
- Взять пароль из локального файла
- Изменить приветствие SSH
- Смотрим неудачные попытки входа SSH
- Передача файлов по SSH
- Запуск графических приложений по ssh
- Завершение сессии SSH
- Туннели SSH
- Выводы
Как мне выйти из SSH-соединения?
Я подключаюсь к серверу через SSH, чтобы отправить сообщение серверу сокетов с помощью команды вроде:
После того, как соединение установлено, и я пишу сообщение и отправляю его, я не могу выйти из текстового режима. Мне только разрешено вводить больше текста и все.
Есть ли команда или комбинация клавиш, которая позволяет мне вернуться в командный режим?
7 ответов 7
Краткий ответ: Тип exit
Если это не сработает, однако .
Escape-символ SSH и последовательность отключения
В большинстве реализаций SSH для интерактивных сессий используется escape-символ, аналогичный комбинации Ctrl-] . Экранирующий символ SSH по умолчанию —
, введенный в начале строки.
Если вы хотите завершить интерактивный сеанс OpenSSH, который застрял и не может быть завершен с помощью ввода exit или Ctrl D в оболочке на удаленной стороне, вы можете ввести
а затем точку . , Чтобы быть уверенным, что нужно вводить escape-символ в начале строки ввода, сначала нужно нажать Enter. Таким образом, следующая последовательность завершит сеанс SSH в большинстве случаев:
Другие последовательности побега
OpenSSH, например, предлагает другие escape-последовательности, кроме
? во время сеанса должен дать вам список. Некоторые примеры:
следование Ctrl-Z приостанавливает сеанс,
& помещает это прямо в фон,
# дает список переадресованных соединений в этом сеансе.
Если вы хотите просто ввести тильду в начале строки, вы должны удвоить ее:
Экранирующий символ можно изменить с помощью параметра командной строки -e . Если вы установите специальное значение -e none , экранирование будет отключено, и сеанс будет полностью прозрачным.
Источник
Как выйти из SSH-соединения?
Я подключаюсь к серверу через SSH для отправки сообщения на сервер сокетов с помощью команды типа:
После того, как соединение установлено, и я напишу сообщение и отправлю его, я не могу выйти из текстового режима. Мне разрешено вводить больше текста, и это возможно.
Есть ли команда или комбинация клавиш, которая позволяет мне вернуться в командный режим?
8 ответов
Как выйти из SSH-соединения?
- закрытие сеанса оболочки, например. с exit , а затем Enter или Ctrl — d обычно позволяет выйти из ssh обычно,
- в случае, если у вас плохое соединение, и оболочка не отвечает, нажмите клавишу Enter , затем введите
. и ssh должен немедленно закрыть и вернуть вас в командной строке.
Первый вариант должен быть интуитивным, но как узнать последний вариант?
Мы могли бы изучить эту информацию, внимательно прочитав страницу руководства.
дает нам документацию по SSH , в которой содержится следующий раздел о escape-символах:
Короткий ответ: Введите exit
Если это не работает, однако .
Символ SSH Escape и последовательность разъединения
Большинство реализаций SSH реализуют escape-символ для интерактивных сеансов, аналогичный комбинации telnet Ctrl-] . Эквивалентный символ SSH по умолчанию —
, введенный в начале строки.
Если вы хотите завершить интерактивный сеанс OpenSSH , который застрял и не может быть завершен, введя exit или Ctrl D в оболочку на удаленной стороне , вы можете ввести
, а затем dot . . Чтобы ввести escape-символ в начале строки ввода, сначала необходимо нажать Enter. Таким образом, следующая последовательность в большинстве случаев прекратит сеанс SSH:
Другие escape-последовательности
OpenSSH, например, предлагает другие escape-последовательности помимо
? во время сеанса должен предоставить вам список. Некоторые примеры:
follow Ctrl-Z приостанавливает сеанс,
& помещает его прямо в фоновый режим,
# предоставляет список переадресованных соединений в этом сеансе.
Если вы хотите просто ввести тильду в начале строки, вам нужно удвоить ее:
Эквивалентный символ можно изменить с помощью опции командной строки -e . Если вы установите специальное значение -e none , экранирование будет отключено и сеанс будет полностью прозрачным.
Вы хотите выйти из оболочки SSH?
Вы можете ввести exit и нажать Enter или использовать Ctrl + D
Просто введите exit или logout (тогда нажмите Enter, конечно), оба будут работать.
Вы можете написать logout в строке консоли (и нажмите Enter , конечно).
Я вижу, что вопрос адекватно ответил, но я хотел бы добавить, что вижу, что вы подключаетесь к этому серверу через ssh на порту 5566. Я читаю один раз на этот сайт , сообщающий через SSH о непривилегированных порты (все выше 1023) небезопасны.
Когда вы регистрируетесь в системе как пользователь без полномочий root (кто-то не является uid 0), вы не можете создать список TCP или UDP-портов ниже 1024. Это связано с тем, что номера портов ниже 1024 являются так называемыми привилегированные порты и могут открываться только root или процессы, выполняемые как root. Например, когда ваш веб-сервер (apache, nginx и т. Д.) Запустится, он сделает это как привилегированный пользователь root, чтобы открыть прослушивающее соединение с портом 80 (порт, который по умолчанию будет использоваться для HTTP-трафика). Теперь, как только порт будет открыт, и все, что нужно сделать с правами root, будет выполнено, веб-сервер вернется к не-привилегированному пользователю (либо www-data, apache, либо никому). С этого момента, когда происходит что-то плохое, оно ограничено только правами, которые имеет этот пользователь. Теперь вернемся к SSH: когда мы запускаем SSH на порте 22, мы знаем, что это делается с помощью корневого или корневого процесса, поскольку никакой другой пользователь не может открыть этот порт. Но что произойдет, когда мы переместим SSH на порт 2222? Этот порт можно открыть без привилегированной учетной записи, что означает, что я могу написать простой скрипт, который прослушивает порт 2222 и имитирует SSH, чтобы захватить ваши пароли.
Поэтому, когда я сам меняю порт, я всегда использую порт ниже 1024, который еще не используется другим стандартным программным обеспечением. Для этого есть хороший список Wikipedia .
Автор статьи также считает, что изменение порта SSH не должно быть сделано вообще по соображениям совместимости.
Другая проблема: у многих корпораций есть входящие и исходящие брандмауэры, то есть вы не можете перейти на какой-либо сайт к произвольному порту и ожидать, что он будет работать. Некоторые защищенные порты, такие как порт 22, часто освобождаются от этого, в то время как другие порты, такие как порт 25 или 110, блокируются.
Я лично считаю, что есть случаи, когда это пригодится. Например, когда вы или небольшая группа людей являются единственными, кто подключается к серверу через SSH, вы регистрируете автоматические атаки с использованием грубой силы, и вы хотите, чтобы журнал был чистым.
Это поддерживаемые символы, которые предоставляют различные варианты, с которыми вы можете играть с помощью ssh.
(Обратите внимание, что escape-коды распознаются только сразу после новой строки.) Вы можете закрыть список последовательностей Escape, нажав Enter .
MacOS : когда ssh зависает, используйте следующую последовательность:
Источник
Как мне выйти из SSH-соединения?
Я подключаюсь к серверу через SSH, чтобы отправить сообщение серверу сокетов с помощью команды вроде:
После того, как соединение установлено, и я пишу сообщение и отправляю его, я не могу выйти из текстового режима. Мне только разрешено вводить больше текста и все.
Есть ли команда или комбинация клавиш, которая позволяет мне вернуться в командный режим?
Как мне выйти из SSH-соединения?
- закрытие сеанса оболочки, например, с exit последующим Enter , или Ctrl — d обычно позволяет вам ssh нормально выйти из сеанса,
- в случае, если у вас плохое соединение и оболочка не отвечает, нажмите Enter клавишу, затем введите
. и ssh должен немедленно закрыться и вернуть вас в командную строку.
Первый вариант должен быть интуитивно понятным, но как мы узнаем последний вариант?
Мы могли бы узнать эту информацию из внимательного прочтения справочной страницы.
дает нам документацию по SSH , в которой есть следующий раздел о escape-символах:
Краткий ответ: Тип exit
Если это не сработает, однако .
Escape-символ SSH и последовательность отключения
В большинстве реализаций SSH для интерактивных сессий используется escape-символ, аналогичный Ctrl-] комбинации telnet . Экранирующий символ SSH по умолчанию
вводится в начале строки.
Если вы хотите прекратить интерактивный сеанс OpenSSH, который застрял и не может быть завершен путем входа exit или Ctrl D в оболочку на удаленной стороне , вы можете ввести,
за которым следует точка . . Чтобы быть уверенным, что необходимо вводить escape-символ в начале строки ввода, сначала нужно нажать Enter. Таким образом, следующая последовательность завершит сеанс SSH в большинстве случаев:
Другие последовательности побега
Например, OpenSSH предлагает другие escape-последовательности
? во время сеанса должен дать вам список. Некоторые примеры:
затем Ctrl-Z приостанавливает сессию,
& помещает это непосредственно в фон,
# дает список переадресованных соединений в этом сеансе.
Если вы хотите , чтобы просто ввести тильду в начале строки, вы должны удвоить его:
Экранирующий символ можно изменить с помощью параметра командной строки -e . Если вы установите специальное значение -e none , экранирование будет отключено, и сеанс будет полностью прозрачным.
Источник
Как пользоваться SSH
SSH — (Secure Shell) — это протокол удаленного управления компьютером с операционной системой Linux. В основном ssh используется для удаленного управления серверами через терминал. Если вы администратор нескольких серверов или даже продвинутый веб-мастер, то наверное, вы часто сталкиваетесь с необходимостью работать с тем или иным компьютером по ssh. В Linux для этого используется сервер ssh на машине, к которой нужно подключится и клиент, на той из которой подключаются.
В этой инструкции мы рассмотрим как пользоваться ssh, а также ее возможности, о которых вы даже не знали. Скорее всего, вы уже знаете как подключиться к серверу по ssh, но у этой утилиты есть еще много возможностей, таких как передача файлов ssh, подключение без пароля или выполнение скрипта на удаленном сервере. Все это мы и рассмотрим далее в статье. Но начнем с самых основ.
Базовый синтаксис
Синтаксис команды выглядит следующим образом:
$ ssh [опции] имя пользователя @ сервер [команда]
Важно заметить что ssh может работать по двум версиям протокола. Версии 1 и 2. Понятное дело, что версия 2 лучше и поддерживает больше типов шифрования и аутентификации. Больше в этой статье об отличиях протоколов мы говорить не будем и я буду подразумевать что вы используете версию 2.
Опции команды SSH
Теперь давайте рассмотрим самые основные опции команды ssh:
- f — перевести ssh в фоновый режим;
- g — разрешить удаленным машинам обращаться к локальным портам;
- l — имя пользователя в системе;
- n — перенаправить стандартный вывод в /dev/null;
- p — порт ssh на удаленной машине;
- q — не показывать сообщения об ошибках;
- v — режим отладки;
- x — отключить перенаправление X11;
- X — включить перенаправление Х11;
- C — включить сжатие.
Это далеко не все опции утилиты, остальные выходят за рамки данной статьи. Многие настройки работы ssh можно изменять через конфигурационный файл
/.ssh/config но здесь мы это тоже подробно рассматривать не будем.
Настройка сервера SSH
Настройки сервера SSH находятся в файле /etc/ssh/sshd_config. Многие из них мы тоже трогать не будем. Рассмотрим только самые интересные. Сначала откройте файл /etc/ssh/sshd.conf
Порт ssh
По умолчанию ssh работает на порту 22. Но такое поведение небезопасно, поскольку злоумышленник знает этот порт и может попробовать выполнить Bruteforce атаку для перебора пароля. Порт задается строчкой:
Поменяйте значение порта на нужное.
Протокол SSH
По умолчанию сервер ssh может работать по двум версиям протокола, для совместимости. Чтобы использовать только протокол версии два раскомментируйте строчку:
И приведите ее к такому виду:
Рут доступ
По умолчанию Root доступ по ssh разрешен, но такое поведение очень небезопасно, поэтому раскомментируйте строчку:
Доступ только определенного пользователя к SSH
Мы можем разрешить доступ к ssh только для определенного пользователя или группы. Для этого добавьте строчки:
AllowUsers User1, User2, User3
AllowGroups Group1, Group2, Group3
Здесь User1 и Group1 — пользователь и группа к которым нужно разрешить доступ.
Выполнение X11 приложений
Не все знают но есть возможность использовать ssh для запуска полноценных X11 приложений. Об этом мы поговорим ниже, но чтобы все заработало необходимо разрешить эту возможность на стороне сервера, добавьте такую строчку:
Основные опции рассмотрели, перед тем как переходить дальше, не забудьте перезагрузить ssh сервер чтобы сохранить изменения:
service sshd restart
Использование SSH
Основная цель этой статьи — показать интересные и полезные способы использования ssh, о которых, возможно, вы не знали. Переходим к самому вкусному — возможности ssh.
Подключение к серверу
Чтобы просто подключиться к серверу по SSH используйте такую команду:
Выполнить команду
Мы привыкли подключаться к удаленному серверу, а уже потом выполнять нужные команды, но на самом деле утилита ssh позволяет сразу выполнить нужную команду без открытия терминала удаленной машины. Например:
ssh user@host ls
Выполнит команду ls на удаленном сервере и вернет ее вывод в текущий терминал.
Выполнить локальный скрипт
Выполним интерпретатор bash на удаленном сервере и передадим ему наш локальный скрипт с помощью перенаправления ввода Bash:
ssh user@host ‘bash -s’
Бекап на удаленный сервер и восстановление
Мы можем сохранять бекэп диска сразу на удаленном сервере с помощью ssh. Перенаправим вывод dd с помощью оператора перенаправления |, затем сохраним его на той стороне в файл:
sudo dd if=/dev/sda | ssh user@host ‘dd of=sda.img’
Теперь чтобы восстановить состояние диска из сделанной копии выполните:
ssh user@host ‘dd if=sda.img’ | dd of=/dev/sda
Здесь и выше /dev/sda имя файла вашего жесткого диска.
Аутентификация без пароля
Использование ssh пароля для входа на сервер не только неудобно но и небезопасно, потому что этот пароль в любой момент может быть подобран. Самый надежный и часто используемый способ аутентификации — с помощью пары ключей RSA. Секретный ключ хранится на компьютере, а публичный используется на сервере для удостоверения пользователя.
Настроить такое поведение очень легко. Сначала создайте ключ командой:
ssh-keygen -t rsa
Во время создания ключа нужно будет ответить на несколько вопросов, расположение оставляйте по умолчанию, если хотите подключаться без пароля — поле Passphare тоже оставьте пустым.
Затем отправляем ключ на сервер:
Вот и все. Теперь при попытке подключится к этому серверу пароль запрашиваться не будет, а стазу произойдет подключение. Смотрите подробнее создание открытого ключа для ssh.
Взять пароль из локального файла
Напомню, что хранить пароли в обычных текстовых файлах небезопасно, но если хотите, то да — возможно. Для этого используется оператор перенаправления ввода Bash:
Изменить приветствие SSH
При входе по ssh может выводиться приветствие, изменить его очень легко. За это отвечает файл /etc/issue. Просто откройте этот файл и введите нужный текст:
Смотрим неудачные попытки входа SSH
Хотите посмотреть были ли попытки неудачного доступа по ssh к вашему серверу и с каких IP адресов? Запросто, все запросы логируются в файл /var/log/secure, отфильтруем только нужные данные командой:
cat /var/log/secure | grep «Failed password for»
Передача файлов по SSH
Кроме выполнения команд, можно копировать файлы по ssh. Для этого используется утилита scp. Просто укажите файл, который нужно передать, удаленный сервер и папку на сервере, вот:
$ scp /адрес/локального/файла пользователь@ хост: адрес/папки
Кроме утилиты scp, передача файлов ssh может быть выполнена более хитрым способом. Прочитаем файл и с помощью cat, передадим, а там сохраним поток в файл:
cat localfile | ssh user@host «cat > remotefile»
ssh user@host «cat > remotefile»
Пойдем еще дальше, вы можете сжимать файлы перед передачей с помощью tar, а потом их сразу же на лету распаковывать:
tar czf — /home/user/file | ssh user@host tar -xvzf -C /home/remoteuser/
Такое копирование файлов ssh позволяет отправлять сразу целые папки.
Запуск графических приложений по ssh
Если вам нужно запустить то или иное графическое приложение на удаленной машине необязательно для этого использовать VNC, вы можете обойтись возможностями ssh. Программа будет выполняться на стороне сервера, а вам будет лишь транслироваться окно, чтобы вы могли сделать все что нужно. Причем все данные шифруются. Чтобы эта функция работала, нужно включить ее поддержку на стороне сервера.
Затем просто выполняем команду запуска графического приложения на удаленном сервере вот таким образом:
ssh -XC user@remotehost «eclipse»
Как вы уже видели опция X разрешает перенаправление X11 на стороне клиента, а С — сжатие данных.
Завершение сессии SSH
Если вы использовали SSH с нестабильным интернетом, когда соединение время от времени рвется, то вам уже, наверное, надоело закрывать терминал, потому что иначе, на первый взгляд, сеанс никак не прекратить. Когда соединение с удаленным сервером разорвано вы не можете ввести никакую команду и сочетания клавиш Ctrl+C, Ctrl+Z, Ctrl+D не работают. И не будут работать поскольку клиент пытается отправить эти команды на сервер. Но есть решение — Escape последовательности. Чтобы активировать их поддержку добавьте строку:
В файл /etc/ssh/ssh_config. Теперь, чтобы разорвать SSH соединение достаточно нажать Enter и набрать:
Другие управляющие символы можно узнать нажав:
Туннели SSH
С помощью SSH туннелей вы можете пробросить порт с удалённого сервера на локальную машину. Это очень полезно, в первую очередь, для разработчиков. Для того чтобы пробросить порт с удалённой машины локальной используйте опцию -L и такой синтаксис:
$ ssh -L локальный_порт :удаленный_адрес : удаленный_порт пользователь@сервер
Например, сделаем удалённую базу данных доступной локально на порту 5555. Для этого выполните подставив свои значения:
$ ssh -N -L 5555:127.0.0.1:3306 root@losst-1
Опция -N сообщает, что команду на удалённой машине выполнять не нужно. Локальный порт — 5555, поскольку сервер баз данных слушает на локальном интерфейсе удалённой машины, то и здесь надо указывать адрес 127.0.0.1. А порт MySQL по умолчанию 3306. Если же вы хотите чтобы локальный сервис был доступен на удалённой машине, то следует использовать опцию -R:
$ ssh -N -R 5555:127.0.0.1:3306 root@losst-1
Теперь локальная база данных на порту 3306 будет доступна на удалённом сервере при обращении к порту 5555.
Выводы
Теперь вы знаете как пользоваться SSH. Как видите, технология SSH позволяет сделать намного больше чем можно предположить с первого взгляда, и это еще далеко не все. Какие интересные возможности SSH используете вы при повседневной работе? Поделитесь в комментариях!
Источник