[stable-2.16] User: Update prompt for SSH key passphrase prompt (#84521) (#85236)

* [stable-2.16] User: Update prompt for SSH key passphrase prompt (#84521)

* update prompt for SSH key passphrase prompt
* introduce timeout in SSH key passphrase interaction

Fixes: #84484

(cherry picked from commit 8588401387)

Co-authored-by: Abhijeet Kasurde <akasurde@redhat.com>
Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>

* Fix Python 2.7 compat

---------

Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>
Co-authored-by: Abhijeet Kasurde <akasurde@redhat.com>
pull/85272/head
Matt Clay 9 months ago committed by GitHub
parent 5814732d2a
commit df967f21ec
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -0,0 +1,4 @@
---
bugfixes:
- user - Update prompt for SSH key passphrase (https://github.com/ansible/ansible/issues/84484).
- user - Set timeout for passphrase interaction.

@ -457,6 +457,7 @@ uid:
import ctypes.util
from datetime import datetime
import grp
import calendar
import os
@ -1219,11 +1220,16 @@ class User(object):
env=env)
out_buffer = b''
err_buffer = b''
first_prompt = b'Enter passphrase'
second_prompt = b'Enter same passphrase again'
prompt = first_prompt
start = datetime.now()
timeout = 900
while p.poll() is None:
r_list = select.select([master_out_fd, master_err_fd], [], [], 1)[0]
first_prompt = b'Enter passphrase (empty for no passphrase):'
second_prompt = b'Enter same passphrase again'
prompt = first_prompt
now = datetime.now()
if (now - start).seconds > timeout:
return 1, '', 'Timeout after %d while reading passphrase for SSH key' % timeout
for fd in r_list:
if fd == master_out_fd:
chunk = os.read(master_out_fd, 10240)

Loading…
Cancel
Save