title: Paramiko SSH failing with "Server '...' not found in known_hosts" when run on web server
body: <p>I am trying to use Paramiko to make an SSH communication between 2 servers on a private network. The client server is a web server and the host server is going to be a "worker" server.  The idea was to not open up the worker server to HTTP connections. The only communication that needs to happen, is the web server needs to pass strings to a script on the worker server. For this I was hoping to use Paramiko and pass the information to the script via SSH.</p>
  
  <p>I set up a new user and created a test script in Python 3, which works when I run it from the command line from my own user's SSH session.  I put the same code into my Django web app, thinking that it should work, since it tests OK from the command line, and I get the following error:</p>
  
  <blockquote>
    <p>Server 'worker-server' not found in known_hosts</p>
  </blockquote>
  
  <p>Now, I think I understand this error. When performing the test script, I was using a certain user to access the server, and the known hosts information is saved to <code>~/.ssh/known_hosts</code> even though the user is actually a 3rd party user created just for this one job. So the Django app is running under a different user who doesn't find the saved known hosts info because it doesn't have access to that folder.  As far as I can tell the user which Apache uses to execute the Django scripts doesn't have a home directory.</p>
  
  <p>Is there a way I can add this known host in a way that the Django process can see it?</p>
  
  <p>Script:</p>
  
  <pre><code>import paramiko
  
  client = paramiko.SSHClient()
  client.load_system_host_keys()
  client.connect('worker-server', 22, 'workeruser', 'workerpass')
  
  code = "123wfdv"
  survey_id = 111
  stdin, stdout, stderr =
      client.exec_command('python3 /path/to/test_script/test.py %s %s' % ( code, survey_id ))
  
  print( "ssh succuessful. Closing connection" )
  
  stdout = stdout.readlines()
  client.close()
  print ( "Connection closed" )
  
  output = ""
  for line in stdout:
      output = output + line
  if output!="":
      print ( output )
  else:
      print ( "There was no output for this command" )
  </code></pre>