Linux удалить ssh туннель

Как закрыть этот ssh-туннель? [закрыто]

Хотите улучшить этот вопрос? Обновите вопрос, чтобы он соответствовал теме Stack Overflow.

Но теперь я не знаю, что я на самом деле сделал. Эта команда влияет на что-нибудь на сервере? И как мне закрыть этот туннель, потому что теперь я не могу правильно использовать свой локальный mysql.

Я использую OSX Lion, а сервер работает на Ubuntu 11.10.

Предполагая, что вы выполнили эту команду: ssh -f user@mysql-server.com -L 3306:mysql-server.com:3306 -N как описано в сообщении, которое вы связали.

  1. ssh : это довольно понятно. Вызывает ssh .
  2. -f : (Со man ssh страницы)

Запрашивает ssh перейти в фоновый режим непосредственно перед выполнением команды. Это полезно, если ssh будет запрашивать пароли или парольные фразы, но пользователь хочет, чтобы это было в фоновом режиме.

[bind_address:] port: host: hostport Определяет, что данный порт на локальном (клиентском) хосте должен быть перенаправлен на данный хост и порт на удаленной стороне.

Эта команда влияет на что-нибудь на сервере?

Да, он устанавливает соединение между localhost и mysql-server.com через порт 3306 .

И как мне закрыть этот туннель .

Если вы использовали -f , вы заметите, что ssh процесс, который вы открыли, уходит в фоновый режим. Метод лучше закрывать это бежать ps aux | grep 3306 , найти pid из ssh -f . -L 3306:mysql-server.com:3306 -N и kill . (Или, может быть kill -9 , я забываю, если просто kill работает). Это дает прекрасное преимущество в том, что не убивает все ваши другие ssh связи; если у вас их больше одного, восстановление их может быть небольшой . болью.

. потому что теперь я не могу правильно использовать мой локальный mysql.

Это потому, что вы эффективно «захватили» локальный mysql процесс и перенаправили любой трафик, который пытается подключиться к нему, удаленному mysql процессу. Гораздо лучше , решение было бы не использовать локальный порт 3306 в порт вперед. Используйте что-то, что не используется, например 33060. (Более высокие числа обычно используются реже; довольно часто переносятся такие комбинации, как «2525-> 25», «8080-> 80», «33060-> 3306» или похоже. Облегчает запоминание).

Итак, если вы использовали ssh -f user@mysql-server.com -L 33060:mysql-server.com:3306 -N , вы бы затем указали свою функцию Zend connect-to-mysql localhost на порт 33060 , который будет подключаться к mysql-server.com порту 3306 . Очевидно , что вы все еще можете подключиться к localhost порту 3306 , поэтому вы все равно можете использовать локальный mysql сервер.

Лучшее объяснение, которое я читал за последнее время. Это очень полезно при доступе к удаленной базе данных из локально установленных сред, например R. Хорошо работает с аутентификацией с открытым / закрытым ключом. Не с паролями, потому что я не нашел способа передать пароли.

Хороший ответ! Между прочим, -9 не требуется kill , учитывая, что процесс все еще работает нормально 😉

Это убьет все сеансы ssh, которые вы открыли с терминала.

Вроде так и есть. Mysql тоже работал нормально, но потом Apache начал жаловаться. Я сделал перезагрузку и все работает как положено. Думаю, проблема решена 🙂

Бежать killall ssh — довольно безрассудная команда. Я советую ps aux | grep ssh выполнить поиск в вашем списке процессов (например, как было предложено @simont выше), чтобы узнать идентификатор конкретного процесса вашего туннельного процесса ssh. Тогда можно убить именно pid.

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

На мой взгляд, лучше НЕ использовать -f и вместо этого просто фоновый процесс как обычно с & . Это даст вам точный pid, который вам нужно убить:

ssh -N -L1234:other:1234 server & pid=$! echo "waiting a few seconds to establish tunnel. " sleep 5 . do yer stuff. launch mysql workbench whatever echo "killing ssh tunnel $pid" kill $pid 

Или еще лучше, просто создайте это как сценарий-оболочку:

# backend-tunnel ssh -N -L1234:other:1234 server & pid=$! echo "waiting a few seconds to establish tunnel. " sleep 5 "$@" echo "killing ssh tunnel $pid" kill $pid 

Использование -f позволяет ssh продолжить сеанс, даже если сеанс терминала закрыт, в отличие от перехода в фоновый режим. Захватить pid использование ps aux | grep ssh | grep довольно тривиально.

@simont с использованием явного pid, возвращенного из фонового задания, безопаснее, независимо от того, как вы его используете. если у вас работает более одного процесса ssh, вам будет плохо

Использование -f также имеет то преимущество, что при необходимости у локального пользователя запрашивается пароль для входа. Если вы используете & , это приглашение не будет видно пользователям, если они не переведут процесс на передний план (например, с помощью fg ).

в первый раз, когда ваш встречается в pid процесса, который также содержит текст ‘ssh’ (например, другой процесс ssh или sshd или редактирование файла с ‘ssh’ в имени), вы поймете, что это подход, хотя и удобен в простых сценариях, но не пуленепробиваемый

Источник

Как закрыть этот SSH туннель?

Я открыл туннель ssh, как описано в этом сообщении: Zend_Db: Как подключиться к базе данных MySQL через туннель SSH? Но теперь я не знаю, что я на самом деле делал. Эта команда влияет на что-либо на сервере? И как мне закрыть этот туннель, потому что теперь я не могу правильно использовать свой локальный mysql. Я использую OSX Lion, а сервер работает на Ubuntu 11.10.

3 ответа

Запрашивает ssh для перехода к фону непосредственно перед выполнением команды. Это полезно, если ssh будет запрашивать пароли или фразы, но пользователь хочет это в фоновом режиме.

[bind_address:] порт: хост: HostPort Указывает, что данный порт на локальном (клиентском) хосте должен быть перенаправляется на данный хост и порт на удаленной стороне.

Эта команда влияет на что-либо на сервере?

Да, он устанавливает соединение между localhost и mysql-server.com на порту 3306.

И как мне закрыть этот туннель.

Если вы использовали -f , вы заметите, что процесс ssh , который вы открыли, возглавляет фон. Более удобный способ его закрытия — запустить ps aux | grep 3306 , найти pid ssh -f . -L 3306:mysql-server.com:3306 -N и kill . (Или, может быть, kill -9 ; я забываю, если работает только kill ). У этого есть прекрасная возможность не убить все ваши другие ssh соединения; если у вас есть несколько, восстановление их может быть небольшой. болью.

. потому что теперь я не могу правильно использовать свой локальный mysql.

Это связано с тем, что вы эффективно «захватили» локальный mysql процесс и перенаправили любой трафик, который пытается подключиться к нему, и удалите его с удаленного процесса mysql . Более приятным решением будет не использовать локальный порт 3306 в переадресации портов. Используйте что-то, что не используется, например 33060. (Более высокие числа, как правило, менее используются, довольно часто для переадресации такой комбинации: «2525- > 25», «8080- > 80», «33060- > 3306» или похоже, немного запоминает).

Итак, если вы использовали ssh -f [email protected] -L 33060:mysql-server.com:3306 -N , тогда вы указывали бы свою функцию Zend connect-to-mysql на localhost на порт 33060 , который подключился бы к mysql-server.com на порту 3306 . Очевидно, вы все равно можете подключиться к localhost на порту 3306 , так что вы все равно можете использовать локальный сервер mysql .

Лучшее объяснение, которое я прочитал за последнее время. Это очень полезно при доступе к удаленной базе данных из локально установленных сред, таких как, например, R. Хорошо работает с аутентификацией с открытым / закрытым ключом. Не с паролями, потому что я не нашел способ передать пароли.

Источник

SSH Туннель

Изображение баннера

Туннелирование (от англ. tunnelling — «прокладка туннеля») в компьютерных сетях — процесс, в ходе которого создаётся логическое соединение между двумя конечными точками посредством инкапсуляции различных протоколов.

Туннелирование представляет собой метод построения сетей, при котором один сетевой протокол инкапсулируется в другой. От обычных многоуровневых сетевых моделей (таких как OSI или TCP/IP) туннелирование отличается тем, что инкапсулируемый протокол относится к тому же или более низкому уровню, чем используемый в качестве туннеля.

Суть туннелирования состоит в том, чтобы «упаковать» передаваемую порцию данных, вместе со служебными полями, в область полезной нагрузки пакета несущего протокола. Туннелирование может применяться на сетевом и на прикладном уровнях. Комбинация туннелирования и шифрования позволяет реализовать закрытые виртуальные частные сети (VPN). Туннелирование обычно применяется для согласования транспортных протоколов либо для создания защищённого соединения между узлами сети.

Создать SSH туннель

Туннели обычно создают для перенаправления траффика. SSH tunnel это то же самое что и SSH port forwarding.

Допустим вы хотите направить траффик со своего localhost (127.0.0.1) на удалённый хост 192.168.0.2 .

На удалённом хосте у вас есть пользователь с именем andrei и вы знаете его пароль.

Сперва нужно определиться с портами на локальном хосте и на удалённом.

Предположим, вы выбрали 9119 для локального и 9200 для удаленного хостов.

То есть вы хотите, чтобы всё, что идёт на localhost:9119 было перенаправлено на 192.168.0.2 : 9200

ssh -L localhost:9119: 192.168.0.2 : 9200 andrei@192.168.0.2

localhost: можно не указывать явно. Он подразумевается по умолчанию, но для простоты запоминания можно оставлять.

ssh -L 9119: 192.168.0.2 : 9200 andrei@192.168.0.2

The authenticity of host ‘192.168.0.2 (192.168.0.2)’ can’t be established.
ECDA …

andrei@192.168.0.2’s password:
Last login: Sun Jan 31 13:23:00 2021

Если вам нужен туннель с поддержкой графического интерфейса X Window System используйте флаг -X

ssh -X -L 9119: 192.168.0.2 : 9200 andrei@192.168.0.2

Демонстрация

Туннель создан, не закрывайте терминал. Откройте два новых терминала или две новые вкладки в старом.

У вас два пустых терминала, оба на локальном хосте. Назовём их 1 и 2.

Из терминала 2 подключимся к удалённому хосту 192.168.0.2 по ssh и будем слушать на порту 9200 с помощью ncat

ssh andrei@192.168.0.2
ncat -l 9200

На терминале 1 с помощью ncat отправим сообщение на порт 9119 локального хоста. Это тот порт, который мы настроили на проброс.

Откройте терминал 2 там дожен появиться тот же текст

Список всех открытых SSH туннелей

Чтобы получить список туннелей открытых именно ssh выполните

ssh 14695 andrei 3u IPv4 230080 0t0 TCP 192.168.0.1:46356->192.168.0.2:ssh (ESTABLISHED) ssh 14695 andrei 4u IPv6 230103 0t0 TCP [::1]:9119 (LISTEN) ssh 14695 andrei 5u IPv4 230104 0t0 TCP 127.0.0.1:9119 (LISTEN)

Вывод этой команды при практически идентичных условиях почему-то разный.

Ниже пример второго варианта. Если вы знаете почему так получается — напишите в комментариях.

ssh 15151 andrei 3u IPv4 239364 0t0 TCP 192.168.0.1:46464->192.168.0.2:ssh (ESTABLISHED) ssh 15151 andrei 4u IPv6 239380 0t0 TCP [::1]:mxit (LISTEN) ssh 15151 andrei 5u IPv4 239381 0t0 TCP 127.0.0.1:mxit (LISTEN) ssh 15151 andrei 9u IPv6 239428 0t0 TCP [::1]:mxit->[::1]:54306 (ESTABLISHED)

Закрыть все SSH туннели

Чтобы закрыть всё, что связано с ssh можно выполнить

Этот метод хорош только если вы работаете один, например на какой-то виртуальной машине.

Источник

Читайте также:  Xcp ng center linux
Оцените статью
Adblock
detector