Установка и ручной запуск связки ключей

Установка и ручной запуск связки ключей

Я хотел бы использовать свой защищенный парольной фразой ключ SSH при выполнении задач с parallel-ssh(и связанными с ним инструментами). Однако я не могу заставить это работать.

Вся документация, касающаяся parallel-ssh, показывает, что я должен иметь возможность использовать --askpassили -Aсделать это:

-A
--askpass
      Prompt  for  a  password  and pass it to ssh.  The password may be 
      used for either to unlock a key or for password authentication.  The 
      password is transferred in a fairly secure manner (e.g., it will not 
      show up in argument lists).  However, be aware that a root user on 
      your system could potentially intercept the password.

Однако когда я ввожу парольную фразу своего ключа, он не работает:

$ parallel-ssh --hosts=machines --user=my_user --askpass \
    --timeout=0 --inline -v 'sudo apt-get update'
Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
Password: 
[1] 09:59:36 [FAILURE] amritiii Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa': 
Permission denied (publickey,password).
[2] 09:59:37 [FAILURE] gbdev Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa': 
Permission denied (publickey,password).
[3] 09:59:37 [FAILURE] code Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa': 
Permission denied (publickey,password).
[4] 09:59:37 [FAILURE] apollo Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa': 
Permission denied (publickey,password).
[5] 09:59:37 [FAILURE] odin Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa': 
Permission denied (publickey,password).
[6] 09:59:37 [FAILURE] hathor Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa': 
Permission denied (publickey,password).
[7] 09:59:37 [FAILURE] ldap Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa': 
Permission denied (publickey,password).
[8] 09:59:37 [FAILURE] thor Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa': 
Permission denied (publickey,password).
[9] 09:59:37 [FAILURE] bioserver Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa': 
Permission denied (publickey,password).

Я убедился, что мой ключ SSH и парольная фраза работают на каждой из машин, поэтому я понятия не имею, как заставить это работать.

решение1

Если предположить, что parallel-sshи psshэквивалентны, то да, то, что вы пытаетесь сделать, должно работать нормально с передачей парольной фразы с помощью переключателя -A.

Пример

Вот пример, где я подключаюсь к 2 разным системам, host1и host2. Я использую -lпереключатель psshдля предоставления пользователя по умолчанию root. Однако host2я переопределяю это в -Hпереключателе, указывая имя хоста как user1@host2.

$ pssh -A -i -H "host1 user1@host2" -l root 'echo "hi"'
Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
Password: 
[1] 21:38:00 [SUCCESS] user1@host2
hi
Stderr: 
This is a private site.  Unauthorized connections are prohibited.  
All activity may be logged.  Disconnect immediately if you object to 
this policy or are not an authorized user.

X11 forwarding request failed on channel 1
Killed by signal 1.
[2] 21:38:00 [SUCCESS] host1
hi
Stderr: 
This is a private site.  Unauthorized connections are prohibited.  
All activity may be logged.  Disconnect immediately if you object to 
this policy or are not an authorized user.

ControlSocket /home/user1/.ssh/[email protected]:22 already exists, disabling multiplexing
X11 forwarding request failed on channel 0
Killed by signal 1.

Если все вышеперечисленное сработает, вы увидите вывод команды, которую я запускаю: echo "hi".

Ваша проблема

Проблема, с которой вы столкнулись с парольной фразой в вашей паре ключей SSH, вызвана ошибкой. Вот ошибка под названием:Проблема 80: Не проходит парольная фраза?. В 4-м комментарии к этой проблеме показан патч:

выдержка

#4[email protected]

Я изменил строку на

  if not ( prompt.strip().lower().endswith('password:') or 
        'enter passphrase for key' in prompt.strip().lower()):

и это, кажется, работает

Рекомендации

решение2

Мне удалось заставить это работать, установив, keychainа не исправляя вручнуюошибкавызывая мои проблемы.

Установка и ручной запуск связки ключей

# install keychain package
$ sudo apt-get install keychain

# add my key to the keychain, entering passphrase when asked
$ keychain ~/.ssh/id_rsa

# source the file generated by the above command
$ . ~/.keychain/$(uname -n)-sh

Выполнить команду без ввода пароля/парольной фразы

На этот раз мне не нужна моя парольная фраза при звонке, parallel-sshтак как аутентификацию берет на себя связка ключей:

$ parallel-ssh --hosts=machines --user=my_user --timeout=0 'sudo apt-get update'
[1] 14:52:15 [SUCCESS] amritiii 
[2] 14:52:17 [SUCCESS] odin
[3] 14:52:25 [SUCCESS] gmod
[4] 14:53:11 [SUCCESS] bioserver
[5] 14:53:14 [SUCCESS] thor
[6] 14:53:14 [SUCCESS] apollo
[7] 14:53:16 [SUCCESS] gbdev
[8] 14:53:17 [SUCCESS] code
[9] 14:53:18 [SUCCESS] hathor
[10] 14:53:34 [SUCCESS] ldap

Запустить связку ключей при входе в систему

Вместо того, чтобы вручную запускать и добавлять свой ключ в связку ключей, просто добавьте следующее в конец вашего файла ~/.bash_profile:

$ keychain --clear $HOME/.ssh/id_rsa
$ . $HOME/.keychain/$(uname -n)-sh

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

Задания Cron с использованием связки ключей

После того, как вышеперечисленное будет введено в ваш ~/.bash_profileфайл, вы можете воспользоваться тем фактом, что ваш ключ теперь хранится в связке ключей, скопировав тот же файл перед запуском cronjob. Например, у меня есть скрипт резервного копирования, который запускается в 21:00 каждую ночь и копирует данные на удаленный компьютер через SSH. Это запись в моем crontab ( crontab -e):

 0 21 * * * . $HOME/.keychain/$(uname -n)-sh; $HOME/backup_script.sh

решение3

Использоватьssh-агентдля автоматической аутентификации (с именем оболочки в качестве аргумента для установки переменных среды агента в этой новой оболочке). Добавьте ключ сssh-добавитьи введите свой пароль только один раз.

$ ssh-agent bash
$ ssh-add
Enter passphrase for /xxxx/.ssh/identity: 
$ 
$ pssh ...

Связанный контент