Разрешение отклонено при попытке запустить скрипт, который использует 'sshpass'

Идея состоит в том, чтобы запустить этот скрипт без необходимости вводить пароли хостов (записанные в файле Hosts.txt). Прямо сейчас, когда я запускаю это, я получаю Permission denied, please try again. в качестве ответа.

#!/bin/bash [[ -z "${1}" ]] && OUT_FILE="WhereTheAnswearIsGoing.txt" || OUT_FILE="$1" [[ -z "${2}" ]] && IN_FILE="Hosts.txt" || IN_FILE="$2" while IFS= read -r host; do indication="$(sshpass -pfootbar ssh -p 2222 -o StrictHostKeyChecking=no -n "$host" 'who -b' | awk '{print $(NF-1)" "$NF}')" printf '%-14s %s\n' "$indication" "$host" >> "$OUT_FILE" done < "$IN_FILE"

Извините, если этот вопрос непонятен, но я не очень разбираюсь в таких вещах.

1
задан 15 December 2017 в 00:29

3 ответа

Похоже, сообщение Permission denied, please try again. генерируется клиентом SSH. Пароль должен быть указан для исключения специального значения символов как $, ! и т. Д. (Ref):

sshpass -p 'footbar' ...

Или вы можете использовать файл, в котором должен храниться пароль ( ref ):

sshpass -f "/path/to/passwordfile" ...

Однако, я помню, это скрипт из моего предыдущего , где я упомянул, что: Permission denied, please try again. То, что я имел в виду, было:

Лучшее решение - (1) настройка аутентификации SSH на основе ключа , (2) создать файл ~/.ssh/config и (3) изменить скрипт для работы с этой установкой.

1. Настроить аутентификацию SSH на основе ключа (источник).

Генерировать ключи RSA и не вводить кодовую фразу:
mkdir ~/.ssh
chmod 700 ~/.ssh
ssh-keygen -t rsa -b 4096
chmod 600 ~/.ssh/id_rsa
Перенести ключ клиента на каждый хост (обратите внимание на кавычки):
ssh-copy-id "<username>@<host> -p <port_nr>"
Теперь вы должны (f5) После этого вы можете отключить аутентификацию паролем (это менее безопасный метод), отредактировав файл /etc/ssh/sshd_config для каждого хост-компьютера таким образом:
#PasswordAuthentication yes
PasswordAuthentication no

1.. Создайте файл ~/.ssh/config. (Read also: source )

Генерация ключей RSA и не вводить кодовую фразу:
mkdir ~/.ssh
chmod 700 ~/.ssh
ssh-keygen -t rsa -b 4096
chmod 600 ~/.ssh/id_rsa

Генерация ключей RSA и не введите кодовую фразу:

chmod 600 ~/.ssh/config
Перенесите ключ клиента на каждый узел (обратите внимание на кавычки):
ssh-copy-id "<username>@<host> -p <port_nr>"

Измените права доступа к файлам:

#!/bin/bash

[[ -z "${1}" ]] && OUT_FILE="WhereTheAnswearIsGoing.txt" || OUT_FILE="$1"
[[ -z "${2}" ]] && IN_FILE="Hosts.txt" || IN_FILE="$2"

while IFS= read -r host; do
        indication="$(ssh -n "$host" 'who -b' | awk '{print $(NF-1)" "$NF}')"
        printf '%-14s %s\n' "$indication" "$host" >> "$OUT_FILE"
done < "$IN_FILE"

3.A. Вы можете использовать приведенный выше скрипт с небольшой модификацией:

host-1
host-2
host-3

В этом случае файл Hosts.txt должен быть:

#!/bin/bash

# Collect the user's input, and if it`s empty set the default values
[[ -z "${1}" ]] && OUT_FILE="WhereTheAnswearIsGoing.txt" || OUT_FILE="$1"
# Provide the list of the hosts as an array
HOSTS=("host-1" "host-2" "host-3")

for host in "${HOSTS[@]}"; do
    indication="$(ssh -n "$host" 'who -b' | awk '{print $(NF-1)" "$NF}')"
    printf '%-14s %s\n' "$host" "$indication" >> "$OUT_FILE"
done
4
ответ дан 22 May 2018 в 17:00

Похоже, сообщение Permission denied, please try again. генерируется клиентом SSH. Пароль должен быть указан для исключения специального значения символов как $, ! и т. Д. (Ref):

sshpass -p 'footbar' ...

Или вы можете использовать файл, в котором должен храниться пароль ( ref ):

sshpass -f "/path/to/passwordfile" ...

Однако, я помню, это скрипт из моего предыдущего , где я упомянул, что: Permission denied, please try again. То, что я имел в виду, было:

Лучшее решение - (1) настройка аутентификации SSH на основе ключа , (2) создать файл ~/.ssh/config и (3) изменить скрипт для работы с этой установкой.

1. Настроить аутентификацию SSH на основе ключа (источник).

Генерировать ключи RSA и не вводить кодовую фразу: mkdir ~/.ssh chmod 700 ~/.ssh ssh-keygen -t rsa -b 4096 chmod 600 ~/.ssh/id_rsa Перенести ключ клиента на каждый хост (обратите внимание на кавычки): ssh-copy-id "<username>@<host> -p <port_nr>" Теперь вы должны (f5) После этого вы можете отключить аутентификацию паролем (это менее безопасный метод), отредактировав файл /etc/ssh/sshd_config для каждого хост-компьютера таким образом: #PasswordAuthentication yes PasswordAuthentication no

1.. Создайте файл ~/.ssh/config. (Read also: source )

Генерация ключей RSA и не вводить кодовую фразу: mkdir ~/.ssh chmod 700 ~/.ssh ssh-keygen -t rsa -b 4096 chmod 600 ~/.ssh/id_rsa

Генерация ключей RSA и не введите кодовую фразу:

chmod 600 ~/.ssh/config Перенесите ключ клиента на каждый узел (обратите внимание на кавычки): ssh-copy-id "<username>@<host> -p <port_nr>"

Измените права доступа к файлам:

#!/bin/bash [[ -z "${1}" ]] && OUT_FILE="WhereTheAnswearIsGoing.txt" || OUT_FILE="$1" [[ -z "${2}" ]] && IN_FILE="Hosts.txt" || IN_FILE="$2" while IFS= read -r host; do indication="$(ssh -n "$host" 'who -b' | awk '{print $(NF-1)" "$NF}')" printf '%-14s %s\n' "$indication" "$host" >> "$OUT_FILE" done < "$IN_FILE"

3.A. Вы можете использовать приведенный выше скрипт с небольшой модификацией:

host-1 host-2 host-3

В этом случае файл Hosts.txt должен быть:

#!/bin/bash # Collect the user's input, and if it`s empty set the default values [[ -z "${1}" ]] && OUT_FILE="WhereTheAnswearIsGoing.txt" || OUT_FILE="$1" # Provide the list of the hosts as an array HOSTS=("host-1" "host-2" "host-3") for host in "${HOSTS[@]}"; do indication="$(ssh -n "$host" 'who -b' | awk '{print $(NF-1)" "$NF}')" printf '%-14s %s\n' "$host" "$indication" >> "$OUT_FILE" done
5
ответ дан 18 July 2018 в 01:13

Похоже, сообщение Permission denied, please try again. генерируется клиентом SSH. Пароль должен быть указан для исключения специального значения символов как $, ! и т. Д. (Ref):

sshpass -p 'footbar' ...

Или вы можете использовать файл, в котором должен храниться пароль ( ref ):

sshpass -f "/path/to/passwordfile" ...

Однако, я помню, это скрипт из моего предыдущего , где я упомянул, что: Permission denied, please try again. То, что я имел в виду, было:

Лучшее решение - (1) настройка аутентификации SSH на основе ключа , (2) создать файл ~/.ssh/config и (3) изменить скрипт для работы с этой установкой.

1. Настроить аутентификацию SSH на основе ключа (источник).

Генерировать ключи RSA и не вводить кодовую фразу: mkdir ~/.ssh chmod 700 ~/.ssh ssh-keygen -t rsa -b 4096 chmod 600 ~/.ssh/id_rsa Перенести ключ клиента на каждый хост (обратите внимание на кавычки): ssh-copy-id "<username>@<host> -p <port_nr>" Теперь вы должны (f5) После этого вы можете отключить аутентификацию паролем (это менее безопасный метод), отредактировав файл /etc/ssh/sshd_config для каждого хост-компьютера таким образом: #PasswordAuthentication yes PasswordAuthentication no

1.. Создайте файл ~/.ssh/config. (Read also: source )

Генерация ключей RSA и не вводить кодовую фразу: mkdir ~/.ssh chmod 700 ~/.ssh ssh-keygen -t rsa -b 4096 chmod 600 ~/.ssh/id_rsa

Генерация ключей RSA и не введите кодовую фразу:

chmod 600 ~/.ssh/config Перенесите ключ клиента на каждый узел (обратите внимание на кавычки): ssh-copy-id "<username>@<host> -p <port_nr>"

Измените права доступа к файлам:

#!/bin/bash [[ -z "${1}" ]] && OUT_FILE="WhereTheAnswearIsGoing.txt" || OUT_FILE="$1" [[ -z "${2}" ]] && IN_FILE="Hosts.txt" || IN_FILE="$2" while IFS= read -r host; do indication="$(ssh -n "$host" 'who -b' | awk '{print $(NF-1)" "$NF}')" printf '%-14s %s\n' "$indication" "$host" >> "$OUT_FILE" done < "$IN_FILE"

3.A. Вы можете использовать приведенный выше скрипт с небольшой модификацией:

host-1 host-2 host-3

В этом случае файл Hosts.txt должен быть:

#!/bin/bash # Collect the user's input, and if it`s empty set the default values [[ -z "${1}" ]] && OUT_FILE="WhereTheAnswearIsGoing.txt" || OUT_FILE="$1" # Provide the list of the hosts as an array HOSTS=("host-1" "host-2" "host-3") for host in "${HOSTS[@]}"; do indication="$(ssh -n "$host" 'who -b' | awk '{print $(NF-1)" "$NF}')" printf '%-14s %s\n' "$host" "$indication" >> "$OUT_FILE" done
5
ответ дан 24 July 2018 в 17:21

Другие вопросы по тегам:

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