Конфигурация ssh без запроса пароля

Цель состоит в том, чтобы иметь возможность писать только ssh 10.0.200.9.switch -l customer с моего ноутбука и войти в систему, не запрашивая пароль.

  • Коммутатор находится внутри локальной сети, что означает Laptop --> bastion.example.com --> 10.0.200.9 .
  • Коммутатор не поддерживает ssh-ключи, а только пароль.
  • На моем ноутбуке и сервере бастиона работает OpenSSH 7.2p2.
  • Использую sshpass 1.05 при попытке пропустить подсказку пароля. Является открытым для других решений, если он существует.

Это полурабочее:

 /home/user/.ssh/config configuration 1 Host bastion hostname bastion.example.com port 2222 user root identityfile /home/user/.ssh/id_rsa Match host *.switch user customer ProxyCommand ssh bastion -W $(echo %h | grep -Po '^[0-9.]+[0-9]+' ):%p 

Работает, но запрашивает пароль

 user@laptop:~/.ssh$ ssh 10.0.200.9.switch -l customer customer@10.0.200.9.switch's password: Type 'help' or '?' to get help. Switch# 

Работает и не запрашивает пароль, но больше времени писать в консоли

 user@laptop:~/.ssh$ export SSHPASS=secretPassWord user@laptop:~/.ssh$ sshpass -e ssh 10.0.200.9.switch -l customer Type 'help' or '?' to get help. Switch 

Это не работает:

 /home/user/.ssh/config configuration 2 Host bastion hostname bastion.example.com port 2222 user root identityfile /home/user/.ssh/id_rsa Match host *.switch user customer ProxyCommand sshpass -e ssh bastion -W $(echo %h | grep -Po '^[0-9.]+[0-9]+' ):%p 

Изменения в .ssh/config file не влияют

 user@laptop:~/.ssh$ export SSHPASS=secretPassWord user@laptop:~/.ssh$ ssh 10.0.200.9.switch -l customer customer@10.0.200.9.switch's password: 

2 Solutions collect form web for “Конфигурация ssh без запроса пароля”

Я думаю, что в вашей конфигурации sshpass в ProxyCommand пытается передать пароль SSH-соединению, идущему на bastion , а не к тому, чтобы наконец перейти к коммутатору. sshpass что sshpass вне внешнего ssh ProxyCommand работает:

 laptop$ export SSHPASS=sshhhh laptop$ sshpass -e ssh -o'Proxycommand ssh customer@bastion -W final.target.switch:22' blah@blah 

Поскольку sshpass ставит SSH-клиента в отдельный tty, чтобы обмануть его в принятии пароля от себя, казалось бы, sshpass должен быть запущен до клиента SSH. Поэтому, если ssh запускает sshpass из ssh/config вероятно, не будет работать.

Но нужно сделать сценарий для запуска sshpass и ssh с любыми необходимыми параметрами. Это работает для меня с необходимой конфигурацией в ~/.ssh/config , как и у вас:

 #/bin/bash if [ -z "$1" ] ; then echo "usage: $0 <args...>" ; exit 1 ; fi sshpass -e ssh "$@" 

Вы можете настроить пользователя на вход в .ssh/config , чтобы он мог обойтись без -l . Кроме того, похоже, что sshpass не справляется с ssh спрашивая о неизвестных ключах хоста, поэтому может known_hosts предварительная настройка known_hosts (или использование StrictHostKeyChecking no ).

Другой способ – использовать plink из инструментов для шпатлевки. см. http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html Помимо того, что вы можете сделать «plink -pw …», вы можете использовать опцию «-m» для удаленный скриптинг.

  • Возможно ли иметь условные параметры в ~ / .ssh / config в зависимости от вызывающего приложения (ssh или sshfs)?
  • Использование SSH для подключения к новому серверу без сохранения ключей хоста в файле $ HOME / .ssh / known_host
  • SSH с бастионным хостом и разными именами пользователей
  • Использование кода оболочки для LocalForward в файле конфигурации ssh
  • Исправьте настройки файла ssh для туннеля на третий компьютер
  • Сценарий манипулирования открытыми ключами SSH в файле authorized_keys
  • Используйте только ключевое слово Match для одиночного хоста в конфигурации ssh
  • SSH-Config - Есть ли способ определить, локальный или удаленный?
  • Как заставить пользователя в файле конфигурации ssh
  • Использование ssh -t работает, но с использованием ProxyCommand ssh -W не
  • Использовать динамически полученное имя хоста с записью конфигурации ssh
  • Interesting Posts

    Как отключить автоматическое копирование выделения?

    Команда для уничтожения определенного PID, предоставленного предыдущей командой

    найти и конвейер grep ничего не возвращает

    mount: непризнанный тип сегмента тонкий

    Каков наилучший способ запустить более новый веб-браузер (firefox, chrome и т. Д.) На более старом Linux (rhel5)?

    Есть ли способ узнать, когда была установлена ​​файловая система?

    Как читать только вторую последнюю строку файла

    Unicode (проблема Bengali-unijoy (m17n)

    низкое пространство для хранения, как его увеличить?

    Как проверить, поддерживается ли привязка привязки к узлу в любой версии libvirt?

    Учитывает ли зависимость dpkg -r между приложениями?

    помощь в организации ssh-псевдонимов

    В документации / usr / bin man, что это значит «не установлено локально»,

    параметры монтирования, показанные в / proc / mounts

    Как сделать поиск нескольких строк с использованием awk в unix?

    Linux и Unix - лучшая ОС в мире.