Как ввести пароль для нескольких окон?

У меня есть сценарий, который запускает мою бродячую машину, открывает несколько терминалов и соединяется с бродягой машиной через ssh в каждом вновь открытом терминале. Моя проблема в том, что мне нужно около пяти терминалов, и я не хочу вводить пароль для каждого терминала вручную. Есть ли способ получить запрос пароля только один раз в главном терминале и использовать тот же пароль для команды ssh?

#!/bin/bash cd /home/kkri/public_html/freitag/vagrant vagrant up for run in $(seq 1 $1) do gnome-terminal --window-with-profile=dark -e "ssh vagrant@localhost -p 2222" --$ done gnome-terminal --window-with-profile=git clear echo "~~~ Have fun! ~~~" 

4 Solutions collect form web for “Как ввести пароль для нескольких окон?”

В целом (без учета бродяг или других деталей, относящихся к системе) лучше всего настроить аутентификацию с помощью SSH-ключей и запустить ssh-agent . Затем откройте сеансы ssh с чем-то вроде:

 # load the key to the agent with a 10 s timeout # this asks for the key passphrase ssh-add -t10 ~/.ssh/id_rsa for x in 1 2 3 ; do ssh .... done 

Или, если вы не можете использовать клавиши, вы можете установить что-то с помощью sshpass .

 read -p "Enter password: " -s SSHPASS ; echo for x in 1 2 3 ; do sshpass -e ssh ... done unset SSHPASS 

Хотя с терминалом в середине, это оставило бы пароль, установленный в среде терминала. Чтобы обойти это, вы можете временно сохранить пароль в файле:

 read -p "Enter password: " -s SSHPASS ; echo PWFILE=~/.ssh/secret_password cat <<< "$SSHPASS" > "$PWFILE" unset SSHPASS for x in 1 2 3 ; do sshpass -f "$PWFILE" ssh ... done shred --remove "$PWFILE" 

Это все еще не оптимально, так как есть шанс, что пароль попадет на диск, поэтому клавиши будут лучше.

Поскольку вы используете бродягу, вы можете просто запустить vagrant ssh в ssh в поле без ввода пароля. Это также будет обрабатывать столкновения портов, если у вас будет более одного бродячего бокса и других вещей.

В качестве альтернативы вы можете использовать tmux вместо gnome-terminal и использовать его функцию синхронизации:

 #!/bin/bash tmux_name="vagrantssh-$BASHPID" tmux new -s $tmux_name -d for run in $(seq 1 $1); do tmux splitw -t $tmux_name -v "ssh vagrant@localhost -p 2222" tmux select-layout -t $tmux_name tiled done tmux kill-pane -t 1 tmux set-window-option -t $tmux_name synchronize-panes on tmux select-layout -t $tmux_name tiled tmux new-window -t $tmux_name tmux kill-window tmux attach -t $tmux_name 

Это запустит tmux и запустит команду ssh в количестве установленных вами стекол, при этом все панели будут синхронизированы (tmux переводит клавиши ко всем панелям). После того, как вы сделали то, что хотите для всех панелей, вы можете нажать ctrl+b затем :set synchronize-panes off чтобы отключить входную синхронизацию. Это может быть связано с ключом для удобства.

Этот подход будет заключаться в использовании проверки ключа, его безопасности и решения проблемы аутентификации.

Просто сгенерируйте пару ключей:

 ssh-keygen -t rsa 

И скопируйте / вставьте содержимое файла ~/.ssh/id_rsa.pub в ~/.authorized_keys на сервере. Если файл не существует, проверьте разрешения только для пользователя.

Если вы используете терминалы с мультипликаторами, я рекомендую terminator , он фактически решает эту проблему с широковещательным клавиатурным ко всем функциям терминалов

Ваш лучший вариант – использовать эмулятор терминала, который может разделить экраны. Большинство из них имеют функцию группировки окон и отправки команды в каждое окно группы. Вы можете использовать терминатор, например, если вам нужен инструмент gui или tmux для альтернативы оболочки.

  • VirtualBox: автоматически монтируйте общую папку в Gentoo
  • локальные сценарии выключения (do's and do not)
  • Как запустить Vagrant в качестве обычного пользователя в Fedora?
  • Как получить поддержку буфера обмена на сервере Linux без X11
  • Утилиты VMWare останавливаются Работа над dist-upgrade
  • Vagrant ssh запросить пароль
  • MacOS X Mavericks, работающий с VirtualBox, не может взаимодействовать с Linux VM
  • Собственность в общей папке NFS не изменяется в гостевой ОС в Vagrant
  • Передача ssh-agent для Vagrant VM
  • Vagrant: возможно ли использовать Vagrant с VMWare в качестве поставщика без оплаты?
  • Vagrant ssh не отображает командную строку
  • Interesting Posts

    Как читать из / proc / $ pid / mem в Linux?

    Преобразование содержимого файла в нижний регистр и сохранение результата в том же файле

    X не загружается после обновления debian

    LXDE: привязка клавиш для одиночного ключа не работает

    Почему у pepperflashplayer открыто почти 50 портов?

    Иконки иконок для значков Linux

    Официальный стандарт / соглашение для расширения файла для сценариев оболочки для источника

    Почему Root не удается получить доступ к каталогу FreeBSD?

    ntpd vs. systemd-timesyncd – Как добиться надежной синхронизации NTP?

    Возможно ли, чтобы X-сервер имел несколько дисплеев?

    Iptables DNAT не работает для какого-либо целевого интерфейса

    Что означает армел?

    В чем разница между именем пользователя, отображаемым именем и именем входа?

    Как разбить несколько разделенных файлов в разных подпапках

    Будет ли графический интерфейс брандмауэра в CentOS перезаписывать изменения, внесенные с помощью руководства IPTABLES?

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