使用Paramiko、Python时不支持Errno-8 Servname

使用Paramiko、Python时不支持Errno-8 Servname,python,python-2.7,paramiko,Python,Python 2.7,Paramiko,我正试图通过Python脚本通过SSH连接到服务器。目前我正在试用paramiko。我在客户端和服务器之间设置了一个公钥,因此不需要密码。我目前正在使用以下代码: ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect('192.168.56.102', 'oracle', None, '~/.ssh/id_rsa') stdin, stdout, stde

我正试图通过Python脚本通过SSH连接到服务器。目前我正在试用paramiko。我在客户端和服务器之间设置了一个公钥,因此不需要密码。我目前正在使用以下代码:

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

ssh.connect('192.168.56.102', 'oracle', None, '~/.ssh/id_rsa')
stdin, stdout, stderr = ssh.exec_command('ls')
但是当运行这个时,我得到了错误

ai_socktype不支持[Errno-8]Servname


有什么帮助吗?

这是通过添加端口号作为参数来解决的

您只需指定参数即可。不需要添加端口号(如果默认端口号可以)

根据的定义,您的示例如下所示:

ssh.connect('192.168.56.102', username='oracle', password=None, key_filename='~/.ssh/id_rsa')

基本上,如果您跳过任何参数,但没有在跳过的参数之后显式地命名参数,则会抱怨ai_socktype。在这种情况下,问题在于参数“username”是第二个参数,但不是“username='oracle”。这也是为什么添加端口号会修复它(然后不会跳过任何参数)