Ssh-In в порт
Рассмотрим следующие две команды:
создать-smtp-сообщение | ssh -p 25 serveraccount
создать-smtp-сообщение | SSH серваккаунт telnet localhost 25
Согласно моему пониманию ssh(1), они оба должны делать одно и то же. Вместо этого второй будет отправлять вывод create-smtp-сообщения на порт 25 сервера с сервера serveraccount (т. Е. Он работает), а первый просто зависает.
Я предполагаю, что это только мое неправильное понимание того, что делает ssh, когда ему присваивается флаг -p, но в случае некоторой ошибки конфигурации: клиент, на котором были выполнены аналогичные команды, является osx-tiger с openssh ssh (OpenSSH_5.1p1, OpenSSL 0.9.7l 28 сентября 2006 г.), на сервере запущен Debian Sarge (действительно? Должен ли он это обновить!) С openssh sshd (OpenSSH_3.8.1p1 Debian-8.sarge.6, OpenSSL 0.9.7e 25 октября 2004 г.). Для авторизации используется DSA, как указано в файле.ssh/config.
2 ответа
Ваш первый пример говорит ssh подключиться к демону ssh (процесс на стороне сервера) через нестандартный порт, в данном случае 25. Если демон sshd не прослушивает этот порт, попытка подключения будет остановлена или произойдет ошибка с проблема протокола, как вы испытываете.
Второй говорит ssh установить нормальное соединение с "serveraccount" (что происходит через порт 22) и удаленно выполнить команду telnet для localhost:25. Вывод команды create-smtp-message становится стандартным для вашей команды telnet, что позволяет вашему SMTP-серверу получать ваше сообщение.
Ssh требует sshd на другой стороне для связи. Опция -p указывает, на каком порту будет происходить этот контакт, если это не порт по умолчанию. Это не так, что кто-то может ssh на SMTP-сервер или веб-сервер. Однако это ошибка первой строки, и она терпит неудачу, потому что эти порты не являются sshd, который может обрабатывать и расшифровывать зашифрованный протокол ssh. Помните, опция -p существует только для того, чтобы параноик мог переместить свой порт sshd на некоторое неочевидное число.
ssh - это не клон telnet, а безопасная замена того, что было основным, но небезопасным приложением telnet - создание подключения к удаленному терминалу.
Одним из устаревших применений telnet, для которого он все еще полезен, является создание тупого терминального соединения с любым портом в системе. Затем вы можете отправлять и получать символы дословно на этот порт. В вашей строке 2 вы использовали ssh для шифрования сеанса с удаленным хостом, а затем на удаленном хосте вы вызвали telnet на этом хосте для отправки информации из сеанса на сервер smtp.
Ssh, с другой стороны, пытается обернуть все в шифрование, а не в чистый текст, и ему нужен sshd для связи, и это единственный способ расшифровки.
Возможно, вы захотите узнать о переадресации портов незашифрованных портов трафика с использованием шифрования ssh, но это сложное приложение, и неясно, что вам это нужно. Ваша вторая строка, вероятно, достаточно хороша для ваших заявленных целей.