Одинарний вхід в SSH зазвичай досягається за допомогою аутентифікації відкритого ключа та агента аутентифікації. Ви можете легко додати свій тестовий ключ VM до наявного агента аутентифікації (див. Приклад нижче). Інші методи, такі як gssapi / kerberos, існують, але є більш складними.
sshpass
У ситуаціях, коли password
доступний єдиний метод аутентифікації, sshpass може використовуватися для автоматичного введення пароля. Будь ласка, зверніть особливу увагу на розділ БЕЗПЕЧЕННЯ БЕЗПЕКИ на головній сторінці . У всіх трьох варіантах пароль видно або зберігається в простому тексті в якийсь момент :
Анонімна труба (рекомендована sshpass)
# Create a pipe
PIPE=$(mktemp -u)
mkfifo -m 600 $PIPE
# Attach it to file descriptior 3
exec 3<>$PIPE
# Delete the directory entry
rm $PIPE
# Write your password in the pipe
echo 'my_secret_password' >&3
# Connect with sshpass -d
sshpass -d3 ssh user@host
# Close the pipe when done
exec 3>&-
Це досить громіздко в bash, можливо, простіше з мовами програмування. Інший процес може приєднатися до pipe / fd до написання пароля. Вікно можливостей досить коротке і обмежене вашими процесами чи коренем.
Змінна середовище
# Set your password in an environment variable
export SSHPASS='my_secret_password'
# Connect with sshpass -e
sshpass -e ssh user@host
Ви та root можете читати змінні середовища вашого процесу (тобто ваш пароль) під час запуску sshpass ( cat /proc/<pid>/environ | tr '\0' '\n' | grep ^SSHPASS=
). Вікно можливостей набагато довше, але все ж обмежене вашими власними процесами чи коренем, а не іншими користувачами.
Аргумент командного рядка (найменш захищений)
sshpass -p my_secret_password ssh user@host
Це зручно, але менш безпечно, як описано на сторінці man. Аргументи командного рядка видно всім користувачам (наприклад ps -ef | grep sshpass
). sshpass намагається приховати аргумент, але все ж є вікно, протягом якого всі користувачі можуть бачити ваш пароль, переданий аргументом.
Бічна примітка
Встановіть вашу змінну bash HISTCONTROL на ignorespace
або ignoreboth
і приставте свої прочутливі команди пробілом. Вони не збережуться в історії.
Аутентифікація відкритого ключа SSH
# Generate a key pair
# Do NOT leave the passphrase empty
ssh-keygen
# Copy it to the remote host (added to .ssh/authorized_keys)
ssh-copy-id user@host
Дуже важлива парольна фраза. Кожен, хто отримав файл приватного ключа, не зможе ним користуватися без парольної фрази.
Налаштування агента аутентифікації SSH
# Start the agent
eval `ssh-agent`
# Add the identity (private key) to the agent
ssh-add /path/to/private-key
# Enter key passphrase (one time only, while the agent is running)
Підключіться як завжди
ssh user@host
Перевага полягає в тому, що ваш приватний ключ зашифрований, і вам потрібно ввести його прохідну фразу лише один раз (також більш безпечним методом введення).