有时候我们会用到用密钥连接SFTP进行文件上传下载移出等操作(比如PS5提交包就需要用到)。而命令行的操作能够集成到生产环境,实现流程自动化,本文简述密钥连接SFTP的方法,实现自动化的上传
文章目录
- cmd
- python
-
- 密码连接
- 密钥文件连接
- 上传、移除文件
- 图形化界面:Filezilla使用密钥文件上传
服务器托管网cmd
sftp连接指令:
sftp -i ~/.ssh/id_rsa username@hostname
注意windows下会要求你的密钥不能存在任意用户都可以访问的目录下。如果报了这个错误,可以把密钥放在C:Users[yourName].ssh
下面。
python
上述cmd脚本能正确连接到服务器,连接后可以输入指令(如put localFilePath remoteDir
进行文件的上传),但需要先输入连接指令,等待几秒钟出现sftp>提示符后才能开始进一步操作。这种方式无法集成到生产环境的自动化脚本中。
那我们来研究一下python吧!
python使用sftp需要用到paramiko
库
密码连接
使用方式:
transport = paramiko.Transport((hostname, port))
transport.connect(username=username, password=password)
完整代码:
import paramiko
# 建立SFTP连接
hostname = '远程服务器地址'
port = 22
username = '用户名'
password = '密码'
transport = paramiko.Transport((h服务器托管网ostname, port))
transport.connect(username=username, password=password)
sftp = transport.open_sftp()
# 在此处执行SFTP操作,例如上传、下载、删除文件等
# 关闭SFTP连接
sftp.close()
transport.close()
密钥文件连接
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(host_name, username=user_name, key_filename=private_key_path)
完整代码:
import paramiko
# 创建SSH客户端
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 密钥文件路径
private_key_path = '/path/to/private_key'
# 连接到SFTP服务器
result = ssh.connect('hostname', username='username', key_filename=private_key_path)
# 检查连接结果
if result is None:
print("连接成功")
else:
print("连接失败:", result)
# 关闭SSH连接
ssh.close()
上传、移除文件
上传:put
sftp.put(local_file_path, remote_target_path)
移除:remove
result = sftp.remove(remote_target_path)
if result is None:
print(f"SFTP: Successfully remove file{remote_target_path}")
else:
print(f"sftp: failed to remove file{remote_target_path}, removing result:", ssh_result)
注意
这里的put方法跟cmd的不一样,python的put指定的是目标文件路径,cmd指定的是目标目录。也就是说python支持复制的同时改名,而cmd会将文件同名复制过去
图形化界面:Filezilla使用密钥文件上传
拓展阅读:Filezilla使用密钥文件上传
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
项目管理已成为当代企业运营和发展过程中不可或缺的重要环节。如何实现服务器托管网高效、有序和可控的项目管理,一直是企业领导和项目团队追求的目标。本文将结合项目管理七招制胜内容,详细阐述项目管理实战中的具体做法。 如何分析项目 了解项目的背景和目的,明确项目的目标…