Слишком длинный список аргументов при выполнении команды ls -d "$PWD"/*

Можем ли мы использовать ssh для подключения к веб-серверу, а затем отправить HTTP-запрос и получить HTTP-ответ?

Нет. SSH - более сложный протокол, чем telnet .

  • telnet - это просто текстовый протокол , отправляющий текстовые запросы и получающий текстовые ответы. Здесь не используется шифрование. Он имеет много общего с HTTP (также текстовый протокол с простыми сообщениями запроса и ответа), поэтому вы можете использовать telnet для получения ответов HTTP.
  • SSH - это бинарный протокол. Также протокол встроен в двоичный файл ssh , поэтому вам не нужно о нем заботиться (в отличие от telnet , где вам нужно аутентифицироваться с помощью специальных команд).

    Вы можете прочитать баннер, но затем начнется обмен ключами, а позже вы получите зашифрованные пакеты, которые вам придется как-то расшифровать, чтобы понять, что там происходит (и отправить зашифрованные пакеты, чтобы получить некоторые ответы).

     telnet localhost 22 
    Попытка 127.0.0.1 ... 
    Подключено к localhost. 
    Escape-символ - '^]'. 
    SSH-2.0-OpenSSH_7 .2p2 
    SSH-2.0-OpenSSH_7.2p2 
     
     � \ �� դ `� (скрыто) 
     

Какие еще программы ...

Как уже упоминалось, netcat является хорошим примером, если вы хотите писать необработанные HTTP-запросы. В противном случае вы можете добиться того же с помощью wget , curl или просто с помощью инструментов разработчика в вашем браузере.

Чтобы ответить на дополнительные вопросы:

(1) telnet также является протоколом, отличным от http, но почему мы можем использовать http поверх telnet, но не можем использовать ssh?

Это не » http через telnet ».Вы все еще используете протокол HTTP, но используете инструмент telnet . Это текстовые протоколы без ограничений, и вы можете отправлять все, что угодно , используя их.

(2) Что означает «баннер с сервера», которого ожидают клиенты SSH, прежде чем продолжить проверку ключа хоста сервера?

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

2
16.03.2016, 01:50
1 ответ

В каталоге слишком много элементов. Это заставляет оболочку расширять * в аргумент командной строки, который превышает ARG_MAX байт:

$ grep ARG_MAX /usr/include/linux/limits.h
#define ARG_MAX       131072    /* # bytes of args + environ for exec() */

Я предлагаю вам использовать find в качестве обходного пути:

$ find "${PWD}" -mindepth 1 -maxdepth 1 > formmlFileList43k.list

EDIT: @hagello написал важную заметку об именах файлов, начинающихся с точки. Эти файлы следует исключить из вывода find . Итак, правильный обходной путь:

$ find "${PWD}" -mindepth 1 -maxdepth 1 '!' -name '.*' > formmlFileList43k.list
4
27.01.2020, 22:04

Теги

Похожие вопросы