paramiko.RejectPolicy
时间: 2023-10-03 19:05:31 浏览: 63
paramiko.RejectPolicy 是 Paramiko 中的一个 Policy 类,用于在 SSH 连接过程中拒绝未知主机的密钥。它会在连接时检查主机密钥并拒绝连接,如果主机密钥不在已知主机密钥列表中。
这个类通常用于在连接远程服务器时进行安全性检查,以确保你连接到的主机确实是你想要连接的主机。如果你连接的主机密钥与你之前保存的主机密钥不匹配,它会拒绝连接并引发一个 SSHException 异常。
在使用 Paramiko 连接 SSH 时,你可以使用 set_missing_host_key_policy() 方法指定一个 Policy 类来控制对未知主机的处理方式。例如,你可以使用 AutoAddPolicy 来自动添加新主机密钥,或使用 RejectPolicy 来拒绝未知主机。
这里是一个使用 RejectPolicy 的例子:
```
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.RejectPolicy())
ssh.connect('example.com', username='user', password='password')
```
这个例子将使用 RejectPolicy 来拒绝未知主机,并在连接时引发 SSHException 异常。
相关问题
paramiko.RejectPolicy 无法忽略Garbage packet received异常
你是对的,paramiko.RejectPolicy 无法忽略 "Garbage packet received" 异常。RejectPolicy 只是用于拒绝未知主机的密钥,而不是用于处理网络传输中的错误。
如果你想忽略 "Garbage packet received" 异常,你可以尝试使用 paramiko.Transport.set_keepalive() 方法来设置一个心跳包,以帮助保持连接的稳定性和可靠性。例如:
```
import paramiko
transport = paramiko.Transport(('example.com', 22))
transport.connect(username='user', password='password')
transport.set_keepalive(30)
```
这个例子将创建一个 Transport 对象并连接到远程主机。然后,它使用 set_keepalive() 方法设置一个心跳包,以便在网络传输中出现问题时保持连接的稳定性。这个例子设置的心跳包间隔为 30 秒,你可以根据需要调整这个值。
另外,你也可以使用 Paramiko 的日志记录功能来查看详细的错误信息,以便更好地了解问题的原因和解决方法。例如,你可以在代码中添加以下行来启用 Paramiko 的日志记录功能:
```
import paramiko
import logging
logging.basicConfig(level=logging.DEBUG)
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.RejectPolicy())
ssh.connect('example.com', username='user', password='password')
```
这个例子将启用 DEBUG 级别的日志记录,你可以在控制台或日志文件中查看详细的错误信息和调试信息。
paramiko.AutoAddPolicy
paramiko.AutoAddPolicy 是 Paramiko 中的一个 Policy 类,用于在 SSH 连接过程中自动添加未知主机的密钥。它会在连接时检查主机密钥并自动将其添加到已知主机密钥列表中,以便以后可以安全地连接到该主机。
这个类通常用于在连接远程服务器时进行安全性检查,以确保你连接到的主机确实是你想要连接的主机。如果你连接的主机密钥与你之前保存的主机密钥不匹配,它会自动将新主机密钥添加到已知主机密钥列表中。
在使用 Paramiko 连接 SSH 时,你可以使用 set_missing_host_key_policy() 方法指定一个 Policy 类来控制对未知主机的处理方式。例如,你可以使用 AutoAddPolicy 来自动添加新主机密钥,或使用 RejectPolicy 来拒绝未知主机。
这里是一个使用 AutoAddPolicy 的例子:
```
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('example.com', username='user', password='password')
```
这个例子将使用 AutoAddPolicy 来自动添加新主机密钥,并在连接时不会引发异常。
阅读全文