
Я хочу подключиться по SSH к удаленной машине, но вместо того, чтобы вводить пароль, я хочу перенаправить его из другого файла.
Итак, у меня есть файл password.txt
, в котором хранится пароль. File.sh
Это мой bash-файл.
ВFile.sh
#!/bin/bash
ssh -T [email protected]
При запуске файла я сделал следующее:
./File.sh < password.txt
Но меня все равно попросили ввести пароль.
Как мне получить пароль для ввода из файла?
решение1
SSH с 'паролем в файле' обычно используется как аутентификация с открытым ключом. Создайте пару ключей с помощью ssh-keygen
, загрузите открытый ключ на другой хост:
scp ./.ssh/id_rsa.pub [email protected]:~/
и разместите его как ~/.ssh/authorized_keys
:
ssh [email protected]
mkdir ~/.ssh
mv ~/id_rsa.pub ~/.ssh/authorized_keys
или, если authorized_keys
файл уже существует:
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
установите соответствующие права доступа (600 для файла, 700 для каталога):
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
и начните новый сеанс SSH.
решение2
sshpass
Для этого можно использовать :
sshpass -f password.txt ssh -T [email protected]
решение3
#!/usr/bin/expect -f
spawn ssh shw@hostname
expect -exact "shw@hostname's password: "
send -- "PASSWORD\r"
expect "$ "
interact
Expect — это инструмент для автоматизации процесса.