我正在尝试通过 ssh 登录到另一台机器,两台机器都运行 Ubuntu 并且共享和安装了相同的密钥。我可以通过 cmdline ssh 远程访问,也可以使用用户名和公钥(自动)设置使用 Remmina。 当我尝试通过 paramiko 连接时,不断收到错误消息:
paramiko.ssh_exception.AuthenticationException:身份验证失败。
我也尝试过使用“id_ed25519”而不是“id_rsa”文件,但仍然没有成功。 这是我的代码,主要是从文档中借来的。我也尝试将密码设置为 不同的选项,如密钥密码或省略此关键字,这没有帮助。
这里是代码(跳过无关):
from loguru import logger
import paramiko
import os.path
def main(host:str, user:str, password: str) -> None:
client = paramiko.SSHClient()
client.load_system_host_keys()
client.set_missing_host_key_policy(paramiko.WarningPolicy)
key_filename=os.path.join(os.path.expanduser('~'), ".ssh", "id_rsa")
client.connect(hostname = host, key_filename=key_filename, password = None)
stdin, stdout, stderr = client.exec_command('uname -s')
logger.info(stdout.readlines())
显然,将连接线更改为:
client.connect(hostname = host, key_filename=key_filename, password = password)
它在启用密码登录的机器上运行良好,但在另一台只接受 ssh 密钥登录的机器上运行不佳。