Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ssh-copy-id hanging sometimes

This is a "follow up" to my question from last week. Basically I am seeing that some python code that ssh-copy-id using pexpect occasionally hangs.

I thought it might be a pexect problem, but I am not so sure any more after I was able to collect a "stacktrace" from such a hang. Here you can see some traces from my application; followed by the stack trace after running into the timeout:

2016-07-01 13:23:32 DEBUG           copy command: ssh-copy-id -i /yyy/.ssh/id_rsa.pub [email protected]
2016-07-01 13:23:33 DEBUG           first expect: 1
2016-07-01 13:23:33 DEBUG           sending PASSW0RD
2016-07-01 13:23:33 DEBUG           consuming output from remote side ... 
2016-07-01 13:24:03 INFO            Timeout occured ... stack trace information ...

2016-07-01 13:24:03 INFO            Traceback (most recent call last):


File "/usr/local/lib/python3.5/site-packages/pexpect-3.3-py3.5.egg/pexpect/__init__.py", line 1535, in expect_loop
c = self.read_nonblocking(self.maxread, timeout)
File "/usr/local/lib/python3.5/site-packages/pexpect-3.3-py3.5.egg/pexpect/__init__.py", line 968, in read_nonblocking
raise TIMEOUT('Timeout exceeded.')
pexpect.TIMEOUT: Timeout exceeded.

During handling of the above exception, another exception occurred:
Traceback (most recent call last):
 File "xxx/PrepareSsh.py", line 28, in execute
   self.copy_keys(context, user, timeout)
 File "xxx/PrepareSsh.py", line 83, in copy_keys
   child.expect('[#\$]')
 File "/usr/local/lib/python3.5/site-packages/pexpect-3.3-py3.5.egg/pexpect/__init__.py", line 1451, in expect
timeout, searchwindowsize)
 File "/usr/local/lib/python3.5/site-packages/pexpect-3.3-py3.5.egg/pexpect/__init__.py", line 1466, in expect_list
timeout, searchwindowsize)
 File "/usr/local/lib/python3.5/site-packages/pexpect-3.3-py3.5.egg/pexpect/__init__.py", line 1568, in expect_loop
raise TIMEOUT(str(err) + '\n' + str(self))
pexpect.TIMEOUT: Timeout exceeded.
<pexpect.spawn object at 0x2b74694995c0>
version: 3.3
command: /usr/bin/ssh-copy-id
args: ['/usr/bin/ssh-copy-id', '-i', '/yyy/.ssh/id_rsa.pub', '[email protected]']
searcher: <pexpect.searcher_re object at 0x2b746ae1c748>
buffer (last 100 chars): b'\r\n/usr/bin/xauth:  creating new authorityy file /home/hmcmanager/.Xauthority\r\n'
before (last 100 chars): b'\r\n/usr/bin/xauth:  creating new authority file /home/hmcmanager/.Xauthority\r\n'
after: <class 'pexpect.TIMEOUT'>

So, what I find kinda strange: xauth showing up in the messages that pexpect received.

You see, today, I created another VM for testing; and did all the setup manually. This is what I see when doing so:

> ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

 /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/xxx/.ssh/id_rsa.pub"
The authenticity of host 'some.ip (some.ip)' can't be established.
ECDSA key fingerprint is SHA256:7...
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
[email protected]'s password: 
Number of key(s) added: 1
Now try logging into the machine, with:   ....

So, lets recap:

  • when I run ssh-copy-id manually ... everything works; and the string "xauth" doesn't show up in the output coming back
  • when I run ssh-copy-id programmatically, it works most of the time; but sometimes there are timeouts ... and that message about xauth is send to my client

This is driving me crazy. Any ideas are welcome.

like image 755
GhostCat Avatar asked May 29 '26 03:05

GhostCat


1 Answers

xauth reference smells like you are requesting X11 Forwarding. It will be configured in your ~/.ssh/config. That might be the difference in your configuration that can cause the hangs.

like image 63
Jakuje Avatar answered May 31 '26 11:05

Jakuje



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!