Как проверить, могу ли я войти в систему сервера через ssh?

Да, корневой каталог текущего пользователя должен быть что переменная среды HOME указывает. Существует, конечно, глобальный параметр настройки системы: запись в /etc/passwd, или в более общем плане домашнее поле в пользовательской базе данных. Приложения, как предполагается, используют ту установку только для поиска пользователя кроме текущего пользователя, или если существуют приложения защиты (например, setuid программа). Иначе $HOME должен иметь приоритет. Если это не делает, это - ошибка в приложении.

ответ cjm показывает, что Inkscape и другие приложения Gnome являются багги в этом отношении.

13
27.01.2012, 06:48
4 ответа

Можно сделать это с комбинацией BatchMode опция и "парсинг" вывода. (ssh всегда возвраты 255, если этому не удается соединиться по любой причине, таким образом, Вы не можете использовать код возврата для различения типы отказов.)

С BatchMode на, никакая подсказка пароля или другое взаимодействие предпринят, таким образом, подключение, которое требует пароля, перестанет работать. (Я также поместил a ConnectTimeout там, который должен быть скорректирован для установки потребностям. И выбранные действительно плохие имена файлов.)

#! /bin/bash

rm good no_auth other
while read ip host ; do
    status=$(ssh -o BatchMode=yes -o ConnectTimeout=5 $ip echo ok 2>&1)
    case $status in
        ok) echo $ip $host >> good ;;
        *"Permission denied"*) echo $ip $host $status >> no_auth ;;
        *) echo $ip $host $status >> other ;;
    esac
done < list.txt

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

25
27.01.2020, 19:52

Ищите различные инструменты, которые автоматизируют рабочие команды на нескольких хостах через ssh. Например, с Mussh:

mussh -H hosts.txt -o ConnectTimeout=5 -P -d -c 'echo `hostname` is alive'

Массажируйте вывод по мере необходимости.

Примечание стороны: почему Вы храните IP-адреса в list.txt? Имена серверов достаточно. Если имена, которые Вы хотите использовать, не являются именами DNS, использовать Host директивы в ~/.ssh/config.

1
27.01.2020, 19:52
servers that I can log in via ssh key
servers that prompts for password (of course password is unknown..)

ожидайте предоставит вход Вашим интерактивным командам. ssh клиент с флагом-v скажет Вам, какие подлинные методы сервер принимает. Если Вы добираетесь до интерактивной подсказки, заставьте ее выйти. Сделайте то, что Вы бледный, у Вас есть все, в чем Вы нуждаетесь.

servers that are unreachable

То же, одна команда для управления их всех, и в темноте, связывает их... Гул.

0
27.01.2020, 19:52

Команда mussh выводит только ошибки, поэтому вы можете просто запустить ее без отладки.

$ cat list.txt
10.1.2.93       trustme
10.1.2.92       wobudong
10.41.41.41     failhost

$ awk '{print $2}' list.txt | mussh -H - -t 10 -m -c hostname
trustme: trustme
failhost: ssh: Could not resolve hostname failhost: Name or service not known
wobudong: ssh: connect to host wobudong port 22: Connection timed out
0
27.01.2020, 19:52

Теги

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