Я использую Ubuntu 12.04. Я использую ssh для подключения ко многим серверам ежедневно, поэтому я помещаю их параметры в файл .ssh / config ; так :
Host server1
User tux
Port 2202
HostName xxx.x.xx.x
Есть ли способ поместить пароли в этот файл для каждого соединения? Поэтому, когда сервер запрашивает пароль, терминал передает свой пароль и отправляет его на сервер, поэтому мне не нужно каждый раз вводить пароль. Кроме того, я не хочу использовать пару открытый / закрытый ключ.
Ответы:
Нет, нет способа указать или предоставить в командной строке пароль неинтерактивным способом для аутентификации ssh с использованием встроенного механизма openssh. По крайней мере, не то, что я знаю. Вы можете жестко закодировать ваш пароль в ожидаемый скрипт, но это тоже не очень хорошее решение.
Вы определенно хотели бы использовать пары ключей для аутентификации без пароля, как сказал Майкл, в конце концов закрытый ключ - это большой пароль в файле.
источник
Чтобы избежать цепочки комментариев: Да, это небезопасно (даже небезопасно). Я настоятельно рекомендую вам делать это только в лабораторной ситуации в изолированной сети или в аналогичной ситуации, в которой не задействованы производственные серверы или потенциально производственный сервер без полного сброса / форматирования.
Я хотел это настроить, так как не думаю, что мой коммутатор 2950 поддерживает закрытые / открытые ключи, и я надеюсь, что когда-нибудь получу эти знания, но я еще не там.
Используя псевдоним и sshpass, это может быть достигнуто.
Мой пример псевдонима:
Где «cisco» - это пароль. Обратите внимание, что между -p и паролем нет пробела.
Использование (ссылаясь на вопрос):
Примечание: это отвечает на вопрос в заголовке только для тех, кто использует поисковые системы. Если вы используете серверы, подобные примеру вопроса, следует использовать пары секретный / открытый ключ, а не этот ответ
источник
Да, как уже упоминалось выше, просто невозможно сохранить пароль. Я бы рекомендовал использовать ключ ssh для авторизации.
сначала сгенерируйте свой ключ:
Затем скопируйте ключ на свои серверы / рабочие столы:
Вот и все. Вас никогда больше не попросят ввести пароль.
Я также рекомендую удалить авторизацию пароля в целом, но это зависит от вас.
источник
sshpass -p $PASSWORD ssh $USERNAME@$HOST "echo `cat ~/.ssh/id_rsa` >> /home/$USERNAME/.ssh/authorized_keys"
но эта программа чище и проясняет намерение.Нет никакого способа сделать это с помощью ssh, это настолько небезопасно, насколько это возможно.
Как отметил Данила, вы можете использовать ожидаемые сценарии, но я бы не стал беспокоиться.
Интересно, чего ты пытаешься достичь? Хотите прыгать с одного сервера на другой? В этом случае вы хотите настроить и использовать ssh-agent на своей рабочей станции и включить переадресацию агента на целевые хосты; таким образом обмен учетными данными будет направлен вашему локальному агенту без необходимости копировать ваш личный ключ.
источник
Я использую этот скрипт из
~/.local/bin
каталогаЧто позволяет мне указать фразу-пароль как
#PS <password>
в.ssh/config
файле.Но, как все говорят, что лучше использовать
ssh-keys
с ,ssh-agent
когда это возможноисточник
Правильный способ справиться с этой ситуацией - использовать ssh-агент на основе сеанса. Вот как:
Пароль останется действительным до конца сеанса. Вам нужно выполнить первую команду только один раз, и после этого вы можете добавить столько ключей, сколько захотите. Когда сеанс уничтожен, то же самое происходит и с агентом, поэтому нет жестко запрограммированного хранилища пароля.
Шокирован, что так долго этого ответа не было здесь!
источник
Вы можете сделать это более безопасным способом, используя sshpass
Установите свой пароль без истории
экспорт PS = ваш_пароль ; история -d $ (история 1)
Установите псевдоним хоста, как указано выше в ~ / .ssh / config
Используйте ssh pass, чтобы использовать переменную окружения и войти в систему на нужной машине в одной команде.
sshpass -p $ PS ssh host_alias
Ваша среда хранит ваш пароль, и это опасно, что любые скрипты могут утечь этот пароль, если вы не знаете, что вы запускаете
источник
sshpass -p $PS ...