望洲顶之旅
于2024年10月6日凌晨03:38,成功登顶位于广西防城港市防城区的望洲顶。
于2024年10月6日凌晨03:38,成功登顶位于广西防城港市防城区的望洲顶。
在终端输入以下命令:
ssh-keygen
之后一路回车,不出意外的话,看到以下画面,密钥(包含私钥和公钥,公钥以 .pub 结尾)就创建成功了
对于 linux 和类 linux 系统,该密钥存放于 ~/.ssh/
,可以通过 ls ~/.ssh
查看。
有时候可能会需要多个密钥对,但是又不想影响到之前已创建的密钥对
创建 ed25519 类型的密钥对(最推荐)
ssh-keygen -t ed25519 -C "这里写注释" -f ~/.ssh/id_ed25519_new_name
ssh-keygen
:这是一个用于生成、管理和转换 SSH 密钥的命令行工具。
-t ed25519
:指定要生成的密钥类型为 ed25519。这种类型的密钥被认为更安全,并且通常生成更快。
-C "这里写注释"
:这是一个注释(通常使用邮箱,但是我不喜欢),用于标识这个密钥的用途。
-f ~/.ssh/id_ed25519_new_name
:指定生成的密钥文件的存储路径和名称。在这里,密钥会被保存为 ~/.ssh/id_ed25519_new_name,私钥为 id_ed25519_new_name,而公钥则为 id_ed25519_new_name.pub。
或者可以创建 rsa 类型的密钥对
ssh-keygen -t rsa -b 4096 -C "用于163账号的 github" -f ~/.ssh/id_rsa_new
通过上面的命令创建密钥对时,一路回车不要过快,系统会提示输入一个密码。可以输入一个强密码,确保它是安全的。再次输入相同的密码以确认:
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
注意:在输入密码时,终端不会显示任何字符(包括星号),这是正常现象。
如果你忘记了 SSH 密钥的密码,将无法使用该密钥进行身份验证,因为 SSH 并没有提供恢复密码的功能。最简单的解决方案是生成一个新的 SSH 密钥对。
Continue reading使用之前需要通过 pip install boto3
安装 boto3 库。
使用方法:usage: python imgs.py input_file
在 7-10
行填入相应信息并将代码保存为 imgs.py:
可以直接运行脚本或者将脚本打包为应用程序。
import boto3
import os
from botocore.exceptions import ClientError
import argparse
# Cloudflare R2 配置
account_id = "" # 这里填入账户 id
access_key_id = "" # 这里填写 S3 客户端的‘访问密钥’
secret_access_key = "" #这里填写 S3 客户端的‘机密访问密钥’
bucket_name = "" # 这里填入你要上传文件到哪个 R2 存储桶的名称
endpoint_url = f"https://{account_id}.r2.cloudflarestorage.com"
# 创建 S3 客户端
s3 = boto3.client('s3',
endpoint_url=endpoint_url,
aws_access_key_id=access_key_id,
aws_secret_access_key=secret_access_key)
def upload_file(file_path, object_name=None):
"""
上传文件到 Cloudflare R2 存储桶
:param file_path: 要上传的本地文件路径
:param object_name: 在 R2 中的对象名称,如果不指定则使用文件名
:return: 如果上传成功返回 True,否则返回 False
"""
if object_name is None:
object_name = os.path.basename(file_path)
try:
s3.upload_file(file_path, bucket_name, object_name)
print(f"File {file_path} uploaded successfully as {object_name} \n\nhttps://imgs.ronan.us.kg/{object_name}")
return True
except ClientError as e:
print(f"Error uploading file {file_path}: {e}")
return False
def main():
parser = argparse.ArgumentParser(description="传入本地或网络图片路径,即可上传到 cloudflare R2 对象存储桶")
parser.add_argument("local_file_path", help="本地图片路径")
args = parser.parse_args()
upload_file(args.local_file_path)
if __name__=="__main__":
main()