- Как выйти из SSH-соединения?
- 8 ответов
- Символ SSH Escape и последовательность разъединения
- Другие escape-последовательности
- Как мне выйти из SSH-соединения?
- 7 ответов 7
- Escape-символ SSH и последовательность отключения
- Другие последовательности побега
- Как мне выйти из SSH-соединения?
- Escape-символ SSH и последовательность отключения
- Другие последовательности побега
- Маленькие хитрости SSH
- Добавление второго фактора к своему SSH
- Безопасное использование agent forwarding
- Выход из зависшей сессии
- Как сохранить постоянный терминал открытым на удаленном узле
- Разделение удаленной сессии терминала с другом
Как выйти из 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, чтобы отправить сообщение серверу сокетов с помощью команды вроде:
После того, как соединение установлено, и я пишу сообщение и отправляю его, я не могу выйти из текстового режима. Мне только разрешено вводить больше текста и все.
Есть ли команда или комбинация клавиш, которая позволяет мне вернуться в командный режим?
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, чтобы отправить сообщение серверу сокетов с помощью команды вроде:
После того, как соединение установлено, и я пишу сообщение и отправляю его, я не могу выйти из текстового режима. Мне только разрешено вводить больше текста и все.
Есть ли команда или комбинация клавиш, которая позволяет мне вернуться в командный режим?
Как мне выйти из 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. Из нее вы узнаете как:
- Добавить второй фактор к логину SSH
- Безопасно пользоваться agent forwarding
- Выйти из вставшей SSH сессии
- Сохранить постоянный терминал открытым
- Поделиться удаленной сессией терминала с другом (без Zoom!)
Добавление второго фактора к своему SSH
Второй фактор аутентификации к своим SSH соединениям можно добавить пятью разными способами:
- Обновить свой OpenSSH и использовать ключ шифрования. В феврале 2020 года в OpenSSH была добавлена поддержка ключей шифрования FIDO U2F (Universal Second Factor). Это отличная новая функция, но есть нюанс: только те клиенты и серверы, которые обновились до версии OpenSSH 8.2 и выше смогут пользоваться ключами шифрования, так как февральское обновление вводит для них новые типы ключей. Командой ssh –V можно проверить клиентскую версию SSH, а серверную — командой nc [servername] 22
В февральскую версию добавили два новых типа ключей — ecdsa-sk и ed25519-sk (вместе с соответствующими сертификатами). Для генерации файла ключа достаточно вставить свой ключ шифрования и запустить команду:
Она создаст открытый и секретный ключи и привяжет их к вашему U2F устройству. Задача секретного ключа на U2F устройстве — расшифровывать секретный дескриптор ключа на диске при активированном ключе шифрования.
Кроме того, в качестве вторичного фактора вы можете предоставить кодовую фразу для ваших ключей.
Ключ-резидент это еще один поддерживаемый OpenSSH тип генерации -sk-ключей. При таком подходе дескриптор хранится на U2F устройстве и позволяет вам иметь его при ключе шифрования когда потребуется. Создать ключ-резидент можно командой:
Затем, для возврата дескриптора обратно в память на новом устройстве, вставьте ключ шифрования и запустите команду:
При подключении к хосту вам все еще нужно будет активировать ключ шифрования.
Безопасное использование agent forwarding
В SHH agent forwarding позволяет удаленному узлу получить доступ к SSH агенту вашего локального устройства. Когда вы пользуетесь SSH с включенным agent forwarding (обычно через ssh -A), в соединении будет два канала: ваша интерактивная сессия и канал для agent forwarding. Через этот канал Unix-сокет, созданный вашим локальным SSH-агентом, соединяется с удаленным узлом. Это рискованный метод, так как пользователь с root доступом на удаленном устройстве может получить доступ к вашему локальному SSH-агенту и потенциально выдавать себя в сети за вас. Пользуясь стандартным SSH-агентом из комплекта Open SSH, вы даже не узнаете, что это случилось. Наличие U2F ключа (или Sekey) поможет вам эффективно заблокировать любые попытки воспользоваться вашим SSH агентом извне.
Даже с такой мерой предосторожности будет хорошей идеей как можно реже использовать agent forwarding. Не стоит пользоваться им на каждой сессии — пользуйтесь agent forwarding только когда вы уверены в его необходимости для текущей сессии.
Выход из зависшей сессии
Прерывание сети, бесконтрольное поведение программ, или управляющая последовательность, которая блокирует ввод с клавиатуры — все это возможные причины разрыва SSH-сессии.
Закончить зависшую сессию можно несколькими способами:
- Автоматически выйти при прерывании сети. В свой .ssh/config необходимо добавить следующее:
ssh будет отправлять echo удаленному узлу каждые ServerAliveInterval секунд для проверки соединения. Если более ServerAliveCountMax эхо не получат ответа, ssh закончит соединение по таймауту и выйдет из сессии.
Вырваться из сессии. ssh по умолчанию использует символ
(тильда) как управляющий. Команда
. закрывает открытое соединение и возвращает вас обратно в терминал. (Управляющие последовательности можно вводить только с новой строки.) Команда
? выведет полный список доступных в этой сессии команд. Имейте ввиду, что чтобы набрать символ
на международных клавиатурах, может потребоваться нажать клавишу
дважды.
Почему вообще случаются зависшие сессии? Во времена создания интернета компьютеры редко двигались с места на место. Когда вы пользуетесь ноутбуками и переключаетесь между несколькими IPv4 сетями WiFi, ваш IP-адрес меняется. Так как SSH полагается на TCP соединения, а те, в свою очередь, полагаются на конечную точку со стабильным IP-адресом, всякий раз как вы переключаетесь между сетями, ваши SSH соединения упускают дескриптор сокета и фактически теряются сами. Когда меняется ваш IP-адрес, вашему сетевому стеку требуется время чтобы обнаружить потерю дескриптора. Когда возникают сетевые неполадки, мы не хотим чтобы один из узлов в TCP-соединении прервал его слишком рано. Поэтому протокол будет пробовать переотправить данные еще несколько раз прежде чем наконец сдастся. Тем временем, в вашем терминале сессия будет выглядеть вставшей. IPv6 добавляет несколько связанных с мобильностью особенностей, которые позволяют устройству сохранять домашний адрес во время смены сети. Возможно, однажды это перестанет быть такой уж проблемой.
Как сохранить постоянный терминал открытым на удаленном узле
Есть два различных подхода к тому, как сохранить соединение при переходе между различными сетями или желании ненадолго отключиться.
Если вам действительно нужно соединение, которое не спадает, даже когда вы переключаетесь между сетями, используйте мобильную оболочку Mosh. Это защищенная оболочка, которая сначала использует SSH-рукопожатие, а затем переключается на свой собственный зашифрованный канал на все время сессии. Так Mosh создает отдельный, очень стойкий и защищенный, канал, который в состоянии выдержать и прерывания интернета, и смену IP-адреса вашего ноутбука, и серьезные разрывы сети, и многое другое, и все это благодаря магии UDP-соединений, а так же применяемому Mosh протоколу синхронизации.
Для использования Mosh вам нужно будет установить его и на клиент, и на сервер, и открыть порты 60000-61000 для несвязного UPD-трафика до вашего удаленного хоста. В дальнейшем для соединения достаточно будет использовать mosh user@server .
Mosh оперирует на уровне экранов и нажатий клавиш, что дает ему ряд преимуществ перед пересылающим бинарный поток стандартного ввода и вывода между клиентом и сервером SSH. Если нам требуется синхронизировать только экраны и нажатия клавиш, то позднее восстановить прерванное соединение становится намного проще. В то время как SSH будет буферизировать и отправлять все что произошло, Mosh достаточно буферизировать нажатия клавиш и синхронизировать последний кадр окна терминала с клиентом.
2. Использовать tmux
Если вам хочется «приходить и уходить когда вздумается» и держать сессию терминала на удаленном узле, воспользуйтесь мультиплексером терминала tmux . Я обожаю tmux и пользуюсь им постоянно. Если ваше SSH-соединение прервалось, то чтобы вернуться в свою tmux сессию достаточно просто переподключиться и ввести tmux attach . Кроме того, в нем есть такие чудесные функции как внутритерминальные вкладки и панели, аналогичные вкладкам в iOS терминале, и возможность делиться терминалами с другими.
Некоторые любят приукрасить свой tmux с помощью Byobu, пакетом который значительно улучшает удобство использования tmux и добавляет в него много сочетаний клавиш. Byobu поставляется вместе с Ubuntu, и его легко установить на Mac через Homebrew.
Разделение удаленной сессии терминала с другом
Иногда при отладке сложных проблем на ваших серверах может возникнуть желание разделить сессию SSH с кем-то, кого нет в одной с вами комнате. tmux идеально подходит для такой задачи! Достаточно сделать всего несколько шагов:
- Убедитесь, что tmux стоит на вашем узле-бастионе, либо на каком-либо сервере с которым вы собираетесь работать.
- Вам обоим нужно будет подключиться по SSH к устройству, используя один аккаунт.
- Один из вас должен запустить tmux чтобы начать tmux сессию.
- Другой должен запустить tmux attach
- Вуаля! У вас общий терминал.
Если вам хочется более изощренных многопользовательских tmux сессий, попробуйте tmate, это форк tmux который значительно упрощает совместные сессии терминала.
Источник