Я использую ubuntu 12.04. Я использую ssh для подключения ко многим серверам ежедневно, поэтому я помещаю их параметры в .ssh / config файл; как это :
Host server1
User tux
Port 2202
HostName xxx.x.xx.x
Есть ли способ поместить пароли в этот файл для каждого соединения? Поэтому, когда сервер запрашивает пароль, терминал передает его на сервер, поэтому мне не нужно каждый раз вводить пароль. Кроме того, я не хочу использовать пару открытого и закрытого ключей.
Нет, не существует способа указать или предоставить в командной строке пароль неинтерактивным способом для аутентификации ssh с использованием встроенного механизма openssh. По крайней мере, не то, о чем я знаю. Вы можете жестко указать свой пароль в сценарии ожидания, но это тоже не лучшее решение.
Вы определенно захотите использовать пары ключей для аутентификации без пароля, как сказал Майкл, в конце концов, закрытый ключ - это в значительной степени большой пароль в файле.
Чтобы избежать цепочки комментариев: Да, это небезопасно (даже, возможно, небезопасно). Я настоятельно рекомендую вам делать это только в лабораторных условиях в изолированной сети или в аналогичной ситуации, которая не включает производственные серверы или потенциально производственный сервер без полного сброса / форматирования.
Я хотел это настроить, так как не думаю, что мой коммутатор 2950 поддерживает частные / открытые ключи, и я надеюсь, что когда-нибудь получу эти знания, но я еще не достиг этого.
Это можно сделать с помощью псевдонима и sshpass.
Мой пример псевдонима:
alias ssc='sshpass -pcisco ssh'
Где «cisco» - это пароль. Обратите внимание, что между -p и паролем нет пробела.
Использование (ссылка на вопрос):
ssc server1
Примечание. Это ответ на вопрос в заголовке только для тех, кто пользуется поисковыми системами. Если вы используете серверы, такие как пример вопроса, следует использовать пары закрытый / открытый ключ, а не этот ответ.
Да, как упоминалось выше, просто невозможно сохранить пароль. Я бы рекомендовал использовать ssh-ключ для авторизации.
сначала сгенерируйте свой ключ:
ssh-keygen
Затем скопируйте ключ на свои серверы / рабочие столы:
ssh-copy-id -i .ssh/id_rsa.pub user@ip-address:
Вот и все. Вам больше никогда не потребуется вводить пароль.
Я также рекомендую вообще удалить авторизацию по паролю, но решать вам.
Невозможно сделать это с помощью ssh, это настолько небезопасно, насколько это возможно.
Как сказал Данила, вы можете использовать сценарии ожидания, но я бы не стал беспокоиться.
Интересно, чего вы пытаетесь достичь? Вы хотите переключаться с одного сервера на другой? В этом случае вы хотите установить и использовать ssh-agent на своей рабочей станции и включить пересылку агента на целевые хосты; Таким образом, обмен учетными данными будет направлен вашему локальному агенту без необходимости копировать ваш закрытый ключ.
Я использую этот скрипт из ~/.local/bin
каталог
#!/usr/bin/bash
ORIG_SSH=/usr/bin/ssh
HOST=$1
SSHPASS=$(grep -Pzo "Host $HOST"'\s*\n((?!Host).*\n)*#PS\s(\N+)\n' ~/.ssh/config|tail -n 2|head -n 1 | sed 's/#PS //')
if [ -n $SSHPASS ]; then
export SSHPASS
sshpass -e $ORIG_SSH $@
else
$ORIG_SSH $@
fi
Это позволяет мне указать кодовую фразу как #PS <password>
в .ssh/config
файл.
Но, как все говорят, лучше использовать ssh-keys
с участием ssh-agent
когда это возможно
Правильный способ справиться с этой ситуацией - использовать ssh-агент на основе сеанса. Вот как:
$ eval `ssh-agent`
$ ssh-add /home/user/.ssh/your_key
Enter passphrase for /home/user/.ssh/your_key:
После этого пароль будет действителен до конца сеанса. Вам нужно запустить первую команду только один раз, и после этого вы можете добавить столько ключей, сколько захотите. Когда сеанс завершается, агент тоже, поэтому нет жестко запрограммированного хранения пароля.
Шокирован тем, что спустя столько времени этого ответа не было!
Вы можете сделать это безопаснее, используя sshpass
Установите пароль без истории
экспорт PS =ваш пароль ; история -d $ (история 1)
Установите псевдоним хоста, как указано выше, в ~ / .ssh / config
Используйте ssh pass, чтобы использовать переменную среды и войти на требуемый компьютер с помощью одной команды
sshpass -p $ PS ssh host_alias
В вашей среде хранится ваш пароль, и опасно, что любые выполняемые скрипты могут привести к утечке этого пароля, если вы не знаете, что запускаете.