您的位置:

Python实现SSH远程连接实现简单操作

一、SSH远程连接的概念

SSH(Secure Shell)是一种网络协议,主要用于远程登录以及远程执行命令。我们可以通过SSH协议连接到远程服务器,并在远程服务器上执行命令行操作。在Python中,我们可以使用paramiko模块实现SSH远程连接。

二、使用paramiko模块实现SSH远程连接

paramiko模块是Python中用于SSH协议连接的第三方库,可以方便地实现SSH远程连接。在使用paramiko模块之前,需要先安装该模块。

pip install paramiko

安装完成后,我们可以通过以下代码实现SSH远程连接。

import paramiko

# 连接信息
host = "192.168.1.100"
port = 22
username = "root"
password = "123456"

# 创建SSH客户端
client = paramiko.SSHClient()

# 自动添加主机名和主机密钥到本地主机文件
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# 连接远程服务器
client.connect(host, port, username=username, password=password)

# 在远程服务器上执行命令
stdin, stdout, stderr = client.exec_command('ls -l')

# 输出命令执行结果
print(stdout.read().decode('utf-8'))

# 关闭SSH连接
client.close()

三、在SSH连接中添加文件传输功能

除了远程执行命令,SSH连接还可以进行文件传输。paramiko模块提供了SFTP(SSH File Transfer Protocol)用于实现文件传输功能。

以下代码演示如何上传本地文件到远程服务器。

import paramiko

# 连接信息
host = "192.168.1.100"
port = 22
username = "root"
password = "123456"

# 创建SSH客户端
client = paramiko.SSHClient()

# 自动添加主机名和主机密钥到本地主机文件
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# 连接远程服务器
client.connect(host, port, username=username, password=password)

# 创建SFTP客户端
sftp_client = client.open_sftp()

# 上传文件
sftp_client.put('/local/file/path', '/remote/file/path')

# 关闭SFTP连接
sftp_client.close()

# 关闭SSH连接
client.close()

四、利用SSH连接实现端口转发

除了远程连接和文件传输,SSH连接还可以用于实现端口转发。实现端口转发后,我们可以在本地主机上通过指定端口号连接到远程服务器上的服务。

以下代码演示如何利用SSH连接实现本地主机到远程服务器的端口转发。

import paramiko

# 连接信息
host = "192.168.1.100"
port = 22
username = "root"
password = "123456"

# 创建SSH客户端
client = paramiko.SSHClient()

# 自动添加主机名和主机密钥到本地主机文件
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# 连接远程服务器
client.connect(host, port, username=username, password=password)

# 实现端口转发
channel = client.get_transport().open_channel(
    'direct-tcpip', ('127.0.0.1', 8080), ('192.168.1.200', 80))

# 关闭SSH连接
client.close()

五、总结

通过使用paramiko模块,我们可以很方便地实现SSH远程连接以及文件传输和端口转发等操作。这对于需要远程操作服务器的开发人员来说是非常有用的。