You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中使用Paramiko带SSH端口选项连接远程服务器

如何在Python中使用Paramiko带SSH端口选项连接远程服务器

嗨,我来帮你搞定这个问题!你刚才遇到的坑其实很多人刚用Paramiko时都会踩——命令行里我们习惯用-p来指定SSH端口,但Paramiko的连接逻辑和命令行不一样,不能把端口拼在主机名后面哦。

你之前把XXX.XXX.XXX.XXX -p55555当作主机名传给Paramiko,它根本识别不了后面的-p55555是端口参数,这就是连接失败的原因。正确的做法是把主机地址和端口完全分开,通过Paramiko的connect()方法的独立参数来指定端口。

给你一个直接能用的代码示例,你替换成自己的信息就行:

import paramiko

# 先把连接信息拆成独立的变量
hostname = "XXX.XXX.XXX.XXX"
ssh_username = "你的SSH用户名(就是命令里的ID)"
ssh_password = "你的SSH登录密码"
ssh_port = 55555  # 这里直接写纯数字的端口号,不用加-p前缀

# 初始化SSH客户端对象
ssh_client = paramiko.SSHClient()
# 自动添加未记录的主机密钥(如果是生产环境,建议改用load_system_host_keys()来更安全地管理主机密钥)
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

try:
    # 建立连接,专门用port参数指定端口
    ssh_client.connect(
        hostname=hostname,
        username=ssh_username,
        password=ssh_password,
        port=ssh_port
    )
    print("远程服务器连接成功啦!")

    # 举个小例子,执行一条远程命令验证一下
    stdin, stdout, stderr = ssh_client.exec_command("whoami")
    # 读取命令输出并打印
    print(f"当前远程登录用户:{stdout.read().decode().strip()}")
finally:
    # 不管连接成功还是失败,最后都要记得关闭连接
    ssh_client.close()

如果你的服务器是用密钥登录而不是密码,也可以轻松调整:把password=ssh_password换成key_filename="/path/to/你的私钥文件"就好,比如key_filename="~/.ssh/id_rsa"(记得替换成你实际的私钥路径)。

总结一下核心点:Paramiko不识别命令行式的-p标记,只需要把端口号单独传给connect()的port参数,就能正确连接到指定端口的SSH服务了。

备注:内容来源于stack exchange,提问作者JH KIM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.13 19:05:27