Telnet / SSH к Java `ServerSocket` - PullRequest
       16

Telnet / SSH к Java `ServerSocket`

1 голос
/ 26 августа 2011

Я создал очень простую Java-программу, которая создает на открытом порту java.net.ServerSocket, x и ожидает соединения, используя accept (). Я хочу использовать telnet / ssh для подключения к программе через порт x, чтобы я мог общаться с указанной программой. Моя проблема в том, что после подключения к порту моя программа распознает и принимает соединение, но ssh зависает. Я предполагаю, что это потому, что у меня нет правильного ответа. Я просто хочу знать, что мне делать дальше. Как мне ответить?

Я мог бы использовать библиотеку, но я бы хотел понять, что будет дальше. Тем не менее, я все равно буду признателен, если кто-нибудь скажет мне, стоит ли мне использовать библиотеку. Кроме того, я знаю некоторые базовые сетевые концепции, такие как TCP / IP, OSI, и эти данные упаковываются, отправляются, а затем разворачиваются, но это мои знания в области сетей.

Ответы [ 3 ]

2 голосов
/ 26 августа 2011

SSH - это очень специфический протокол, включающий шифрование.Вы не хотите просто подключиться к сокету, который по умолчанию использует обычный текст?

1 голос
/ 26 августа 2011

ssh, вероятно, слишком сложно для того, чего вы хотите достичь. Он зависает, потому что ждет ответа от вашего сервера, который он, вероятно, никогда не получит. ssh также имеет сложные требования безопасности, которые вы, вероятно, не хотите реализовывать для вашего простого сервера.

Почему бы вам не начать с чего-то очень базового на стороне клиента, как в этом руководстве . С этого момента вы все равно можете добавлять функции и возможности по мере необходимости.

Edit:

Отправка команд с помощью telnet :

Клиентская сторона:

Просто введите telnet host port, там вы наберете say Hello World и нажмете Enter.

Серверная сторона:

Вы получаете поток байтов от вашего клиента. Сначала вы должны разобрать его как строку. Затем вы можете просто разделить эту строку, ища первый пробельный символ. Строка перед этим - ваша «команда», часть после пробела - ваша «полезная нагрузка».

В этом примере вы можете сказать «say» в качестве команды и «Hello World» в качестве полезной нагрузки.

Затем сравните «команду» со списком известных команд, и в зависимости от того, какая у вас команда, вы можете выполнить ее с полезной нагрузкой в ​​качестве аргумента.

1 голос
/ 26 августа 2011

Если вы не гений криптографии и сетей, я сомневаюсь, что вы сможете реализовать SSH-сервер.Я не знаю, каковы ваши точные требования, но вы можете взглянуть на это: http://www.sshtools.com/en/maverick-sshd/ Это sshd в JAVA (но я не использовал его лично, поэтому не могу вам многое рассказать)

...