Tips for finding Knowledge Articles

  • - Enter just a few key words related to your question or problem
  • - Add Key words to refine your search as necessary
  • - Do not use punctuation
  • - Search is not case sensitive
  • - Avoid non-descriptive filler words like "how", "the", "what", etc.
  • - If you do not find what you are looking for the first time,reduce the number of key words you enter and try searching again.
  • - Minimum supported Internet Explorer version is IE9
Home  >
article

KB-8165: Running Centrify OpenSSH Commands, an Error is Thrown: "ld.so.1: ssh: fatal: relocation error"

Centrify DirectControl ,  

6 February,17 at 03:43 PM

Applies to: Centrify DirectControl 5.X  on Solaris

Problem:
When Centrify OpenSSH is installed, and the LD_LIBRARY_PATH variable is set such that the path to the Centrify supplied libraries appears at the end.

i.e: LD_LIBRARY_PATH=/lib:/usr/lib:/usr/share/centrifydc/lib
 

The Centrify ssh commands throw an error similar to:

ld.so.1: ssh: fatal: relocation error: file /usr/share/centrifydc/bin/ssh: symbol EC_KEY_free: referenced symbol not found

Moving the Centrify library location to the beginning of LD_LIBRARY_PATH

i.e: LD_LIBRARY_PATH=/usr/share/centrifydc/lib:/lib:/usr/lib  

will allow the Centrify commands to execute successfully, but potentially causes other system commands or commands from other vendors to error.

Cause:
The commands that come with Centrify OpenSSH (scp, sftp, slogin, ssh, sshd-add, ssh-agent, ssh-keygen, ssy-keyscan), require the use of Centrify compiled libraries that enable Elliptical Curve Encryption. The libraries that come with the Solaris Operating System are not compiled with this feature.  The LD_LIBRARY_PATH variable controls which dynamically linked libraries are chosen at runtime.  If the Centrify library (libcrypto.so) is chosen because it is first in the PATH, then Centrify commands are succcessful.  If the system library is chosen first, the Elliptical Curve (EC_KEY) routines are not found.

Workaround:
The work-around is to use the Centrify wrapper script, /usr/share/centrifydc/bin/cdcexec, to unset the LD_LIBRARY_PATH variable before executing the Centrify command.  Once the command finishes, the LD_LIBRARY_PATH variable will return to the value set by the user. Attached to this article is a script that can be used to make the modifications on the machine to allow Centrify commands to run properly.  By default the script does NOT make the modifications required, it simply prints out the commands that need to be executed by root.  The steps below will make a modification to the script such that the commands will actually be executed and nothing further will be needed.

Instructions for using the script are:

1) Download the file, fix_ssh.sh.tar
2) As the root user, untar the script

# tar xvf fix_ssh.sh.tar

3) Open the script in a text editor
4) Modify the lines as such

From:

act="echo"
#act=""

To:

#act="echo"
act=""
 

5) Save the file
6) Execute the script as the root user

# fix_ssh.sh

Resolution:
This issue will be addressed in a future release of Centrify Direct Control

Attachments:

Still have questions? Click here to log a technical support case, or collaborate with your peers in Centrify's Online Community.