EC2免pem用密码登陆

本文介绍了如何在AWS EC2实例启动时通过cloud-init脚本修改安全设置,启用PasswordAuthentication,以便使用密码直接登录。在实例创建的高级详细信息中配置相关设置,启动后即可用密码进行登陆。
摘要由CSDN通过智能技术生成

原理

EC2在初始化实例时,会运行cloud-init脚本一次。

我们可以在cloud-init脚本中修改登陆的安全设置PasswordAuthentication

默认PasswordAuthentication是no

操作

在设置实例信息时,打开“高级详细信息

填入如下信息

#cloud-config
password: 《你要设置的登陆密码》
chpasswd: { expire: False }
ssh_pwauth: True

如图



登陆

在系统初始化完之后,可以直接使用

ssh ec2-user@你的实例的ip地址
就能登陆了。

中间会提示输入登陆密码

The authenticity of host 'ec2-xxx-xx-xxx-xxx.compute-1.amazonaws.com (xx.xx.x.xx<span style="font-family: Arial, Helvetica, sans-serif;">)
以下是将PEM格式的SM2公钥转换为C/C++中可以使用的数据结构的示例代码: ```c++ #include <openssl/bio.h> #include <openssl/evp.h> #include <openssl/ec.h> #include <openssl/pem.h> /* 将PEM格式的SM2公钥转换为EC_KEY结构 */ EC_KEY *pem_to_ec_key(const char *pem_key) { EC_KEY *ec_key = NULL; BIO *bio = NULL; EVP_PKEY *evp_key = NULL; bio = BIO_new(BIO_s_mem()); BIO_puts(bio, pem_key); evp_key = PEM_read_bio_PUBKEY(bio, NULL, NULL, NULL); if (evp_key != NULL) { ec_key = EVP_PKEY_get1_EC_KEY(evp_key); EVP_PKEY_free(evp_key); } BIO_free(bio); return ec_key; } /* 将EC_KEY结构的SM2公钥转换为C/C++中的数据结构 */ void ec_key_to_bytes(EC_KEY *ec_key, unsigned char *buf, int buf_len) { const EC_GROUP *group = EC_KEY_get0_group(ec_key); const EC_POINT *point = EC_KEY_get0_public_key(ec_key); const EC_POINT *generator = EC_GROUP_get0_generator(group); const BIGNUM *x = EC_POINT_get0_affine_coordinates_GFp(group, point, NULL, NULL); const BIGNUM *y = EC_POINT_get0_affine_coordinates_GFp(group, point, x, NULL); const BIGNUM *order = EC_GROUP_get0_order(group); const BIGNUM *a = EC_GROUP_get0_a(group); const BIGNUM *b = EC_GROUP_get0_b(group); const BIGNUM *gx = EC_POINT_get0_affine_coordinates_GFp(group, generator, NULL, NULL); const BIGNUM *gy = EC_POINT_get0_affine_coordinates_GFp(group, generator, gx, NULL); int len = BN_num_bytes(order); if (buf_len < len * 6) { return; } memset(buf, 0, buf_len); buf[0] = len * 2 + 1; buf[1] = 0x02; BN_bn2bin(x, buf + 2 + len - BN_num_bytes(x)); buf[len + 2] = 0x03; BN_bn2bin(y, buf + len + 3 + len - BN_num_bytes(y)); buf[len * 2 + 3] = len; BN_bn2bin(order, buf + len * 2 + 4); BN_bn2bin(a, buf + len * 3 + 4); BN_bn2bin(b, buf + len * 4 + 4); buf[len * 5 + 4] = len * 2; BN_bn2bin(gx, buf + len * 5 + 5 + len - BN_num_bytes(gx)); BN_bn2bin(gy, buf + len * 6 + 5 + len - BN_num_bytes(gy)); } /* 示例用法 */ int main() { const char *pem_key = "-----BEGIN PUBLIC KEY-----\n" "MFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAEyKmZGn1LbXtjJ0Gj4Fg6IhXzgHd\n" "qz5M5zgAvoU+OeGQ0FmLjSw5zUyvJfE8vJx42vZIYdJ1s0j3w/h5lQ+MzA==\n" "-----END PUBLIC KEY-----\n"; EC_KEY *ec_key = pem_to_ec_key(pem_key); if (ec_key != NULL) { int len = EC_GROUP_get_degree(EC_KEY_get0_group(ec_key)) / 8; unsigned char buf[len * 6 + 5]; ec_key_to_bytes(ec_key, buf, sizeof(buf)); /* buf中存储了C/C++中的SM2公钥 */ EC_KEY_free(ec_key); } return 0; } ``` 其中,`pem_to_ec_key`函数将PEM格式的SM2公钥转换为EC_KEY结构,`ec_key_to_bytes`函数将EC_KEY结构的SM2公钥转换为C/C++中的数据结构。在示例代码中,C/C++中的SM2公钥存储在`buf`中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值