一、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远程连接以及文件传输和端口转发等操作。这对于需要远程操作服务器的开发人员来说是非常有用的。