Вопрос или проблема
После того как я подключился по ssh с моего локального ПК к другому ПК, скажем, машина B, есть ли команда в Linux, которую я могу вызвать на машине B, чтобы увидеть точную команду ssh, которую я использовал для входа в систему?
Пример
Я на своем ПК, но затем я подключаюсь по ssh к машине B, на которой установлен glassfish. Часть команды ssh создает туннель, чтобы я мог получить доступ к веб-консоли glassfish в веб-браузере моего ПК. Вот команда, которую я использую:
ssh [email protected] -L 5000:machineb.com:4848
С этого момента я могу открыть веб-браузер на своем ПК и ввести localhost:5000
, чтобы попасть в консоль администратора glassfish.
Однако бывают случаи, когда я подключаюсь по ssh, используя приведенную выше команду, а затем мониторию логи сервера в терминале linux и забываю, какой порт я использовал для туннелирования; в приведенном выше случае это будет порт 5000.
Есть ли команда в Linux, которую я могу использовать на машине B, чтобы увидеть команду ssh, которую я использовал для подключения к ней?
Цель этого заключается в том, чтобы просто увидеть туннелированный порт на мой локальный ПК, чтобы получить доступ к веб-браузеру glassfish.
В данный момент я просто выхожу с машины B и вижу свою последнюю команду с портом для повторного входа, но мне было интересно, есть ли способ, о котором я упоминал, без необходимости это делать.
Ответ или решение
Чтобы увидеть команду SSH, с помощью которой вы подключились к удаленной машине (например, к машине B), вы можете воспользоваться несколькими подходами, однако стоит отметить, что по умолчанию в Linux нет встроенной возможности для просмотра полной команды SSH, используемой для подключения. В данной статье мы рассмотрим несколько методов, которые могут помочь вам получить желаемую информацию.
Использование переменных окружения
Когда вы подключаетесь к удаленной машине, SSH устанавливает несколько переменных окружения, которые могут быть полезны для диагностики. Одна из таких переменных — это SSH_CLIENT
, которая содержит информацию о клиенте, включая IP-адрес, порт клиента и удаленный порт. Вы можете вывести эту переменную на экране, выполнив следующую команду на машине B:
echo $SSH_CLIENT
Вывод будет выглядеть примерно так:
192.168.1.10 5000 22
Где 192.168.1.10
— это ваш локальный IP-адрес, 5000
— это локальный порт, который вы использовали для подключения, и 22
— порт SSH на машине B.
Просмотр активных SSH-соединений
Еще одним способом является использование команды netstat
, которая позволяет просмотреть все активные соединения. Таким образом, вы можете увидеть, какие порты открыты и к какой службе они подключены:
netstat -tnpa | grep ssh
Эта команда отобразит список активных TCP соединений с соответствующими процессами, связанными с SSH. Это может помочь вам получить информацию о текущих соединениях, но не даст вам полной команды SSH.
Использование файла истории команд
Если вам необходимо запомнить команду SSH для будущего использования, вы можете добавить её в файл .bash_history
на вашем локальном компьютере перед выполнением подключения. Это можно сделать следующим образом:
echo 'ssh [email protected] -L 5000:machineb.com:4848' >> ~/.bash_history
Заключение
Хотя в стандартной установке Linux нет прямого способа увидеть точную команду SSH, с которой вы подключились к машине B, существуют разные подходы, которые могут помочь вам получить необходимую информацию. Рекомендуется использовать переменные окружения, просматривать активные соединения через netstat
или сохранять команды подключения в файл истории на вашем локальном компьютере. Это поможет вам легче управлять вашими SSH-сессиями и вспоминать туннелирование портов для доступа к удалённым приложениям, таким как GlassFish.
Примечание
Не забывайте об опасностях, связанных с использованием SSH, включая безопасность ваших ключей и проходную аутентификацию. Убедитесь, что вы используете безопасные практики при работе с SSH, чтобы защитить свои соединения и данные.