Я использую Ubuntu 11.10. Я использую ssh
для подключения ко многим серверам ежедневно, поэтому я помещаю их параметры в .ssh/config
файл следующим образом:
Host Home
User netmoon
Port 22
HostName test.com
Есть ли способ поместить пароли для каждого соединения в этом файле, чтобы, когда сервер запрашивает пароль, терминал вводит свой пароль и отправляет его на сервер?
Мне это нужно, потому что иногда я стою в стороне от ПК, а когда возвращаюсь, набираю пароль и нажимаю Enterтерминал говорит CONNECTION CLOSED
.
PS Я не хочу использовать пару открытый / закрытый ключ.
command-line
bash
ssh
remote-access
Netmoon
источник
источник
SSH_ASKPASS
.Ответы:
Обмен безопасности для удобства никогда не заканчивается хорошо ...
Не могли бы вы использовать
ssh-copy-id
изopenssh-client
пакета?От
man ssh-copy-id
:источник
Если вы на самом деле не хотите использовать пару открытый / закрытый ключ, вы можете написать
expect
скрипт для автоматического ввода пароля в зависимости от адреса назначения.Изменить: Я имею в виду, что у вас может быть скрипт, который, с одной стороны, использует
expect
для ввода пароля для вас, а с другой стороны, считывает пароль для данного пользователя и хоста из файла конфигурации. Например, следующий сценарий python будет работать для сценария солнечного дня:и формат файла конфигурации будет следующим:
Примечание. Как объяснялось, сценарий python должен быть намного более сложным, чтобы обрабатывать все возможные ошибки и сообщения с вопросами из ssh и все возможные URL-адреса (в примере предполагается, что это будет что-то вроде
user@host
, но пользовательская часть не ' т использовался в большинстве случаев), но основная идея была бы прежней. Что касается файла конфигурации, вы можете использовать другой файл конфигурации или использовать.ssh/config
и написать свой собственный код для анализа этого файла и получения пароля для данного пользователя и хоста.источник
Там также есть
sshpass
программа для этого. Как пользоваться:sshpass -p MyPa55word ssh me@myservor.com
источник
sshpass
вместоsshpass
), вы просто сохранили свой пароль («MyPa55word») в файле истории вашей оболочки..ssh/config
, почему не в истории оболочки тоже?brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb
. Больше: gist.github.com/arunoda/7790979read -s password; sshpass -p "$password" ssh me@myservor.com
, Это предотвратит появление пароля в историиКак насчет ProxyCommand:
Вы можете использовать
ssh -W
вместо этогоnc
:источник
-W
опцией. У вас есть обходной путь?test.com
запроса пароля наHome
запрос пароля. В чем смысл? Какой трюк, чтобы заставить его работать?Боюсь, это невозможно.
Единственная реальная альтернатива - использовать закрытые ключи, но вы сказали, что не хотите (почему нет?).
источник
Вы можете создать простую замену сценария ssh в / usr / local / bin:
И тогда в вашем файле ~ / .ssh / config вы можете использовать
источник
Я использую приложение от VanDyke Software под названием SecureCRT .
http://www.vandyke.com/products/securecrt/
Это не бесплатно, но по очень разумной цене. Я использовал его в течение многих лет (работает на Windows или с помощью Wine) для удаленного доступа, эмуляции терминала и (рассеянного) управления сетью. В конце 2011 года они наконец выпустили версию для Linux.
Он поддерживает сложные настройки входа (или сценарии), сохраненные пароли (или сертификаты), несколько сеансов с вкладками и т. Д.
При запуске вы можете выбрать, какая удаленная цель (и протокол) из структурированного списка (древовидное представление) сохраненных удаленных (или локальных) машин, или просто создать соединение (которое затем сохраняется).
Я нашел это особенно полезным для удаленных сайтов с расширенной аутентификацией, нестандартными портами или согласованием доступа через брандмауэр.
Если вы много делаете удаленный доступ (часть вашей основной роли), то это приложение оправдает свои расходы в первый месяц использования.
источник
Отвечая на вопрос, который вы задали, нет, невозможно настроить пароль по умолчанию в файле конфигурации ssh.
Но если действительно, как вы говорите, это «потому что иногда я стою в стороне от ПК и когда я возвращаюсь, набираю пароль и нажимаю Enterна терминале сообщение
CONNECTION CLOSED
» , то почему бы не предотвратить закрытие сессии? SSH может поддерживать связь для вас.источник
Спасибо, Арек за вдохновение ...
Вместо запуска другого процесса оболочки, это просто функция, запущенная в текущей оболочке bash. Он запускает одну
awk
команду, чтобы проанализировать файл конфигурации и выяснить, должен ли он взять пароль из переменной оболочки или из открытого текста пароля в файл конфигурации ssh (сawk
использованиемeval
вместо проблем,describe
с которыми я столкнулся при использованииdescribe
).Я пробовал так много способов использования
sshpass
напрямую вssh
конфигурационном файле с помощью ProxyCommand, но, похоже, ничего не работало, как ожидалось, кроме случаев, когда я мог войти в ящик через RSA. Но тогда мне нужно было отправить пароль, чтобы открыть мой зашифрованный каталог. Тем не менее, моя функция ниже, кажется, работает для меня во всех случаях, даже для Cygwin.Тогда
~/.ssh/config
раздел выглядит так:Если
#Passvar
существует в разделе конфигурации это переопределяет#Password
.$MYPASS_ENVVAR
переменная окружения, содержащая ваш парольНаслаждайтесь!
источник
Ответ @BrunoPereira на этот вопрос показывает альтернативный способ подключения без явного ввода пароля и обхода ключей ssh.
Вы можете создать скрипт, псевдоним или функцию
~/.bashrc
для быстрого выполнения этой команды.Очевидно, есть некоторые соображения безопасности, которые вы должны учитывать при таком подходе.
источник
Вот мой сложный вариант ответа @ ArekBurdach. Он предлагает следующие расширения:
ssh
командной строке; т.е. он также поддерживаетssh <args> <host> <commands>
синтаксисssh
ssh_config
scp
тожеssh-wrapper
scp-wrapper
Монтаж
Определите псевдонимы в вашем
~/.bashrc
:конфигурация
С помощью
IgnoreUnknown
директивыssh
не жалуется на недавно введеннуюPassword
директиву, поэтому (в отличие от ответа @ ArekBurdach) мы можем сделать так, чтобы это выглядело как «реальная» конфигурация. Если вам не нравится это, тривиально заменить сценарий обратно на закомментированный.источник
Если у вас нет прямого доступа к ключевой паре, вы можете зашифровать пароль на своем локальном компьютере.
Способ сделать это - зашифровать ваш пароль с помощью ключа в дополнение к ProxyCommand @Eric Woodruff.
Способ комбинирования - использование трубы:
где
источник
В блоге описан небольшой вариант способа использования,
sshpass
который можно найти здесь . Учитывая, что у вас есть зашифрованный паролем файл gpg (как это описано в блоге), вы можете сделать что-то вроде этого:и просто сохраните эту команду как псевдоним в вашем
.bashrc
.Если вы хотите туннелировать через это соединение, вы можете сделать что-то вроде
источник