Skip to content

Commit

Permalink
update post
Browse files Browse the repository at this point in the history
  • Loading branch information
aieu committed Sep 26, 2023
1 parent 16a3230 commit cbeb4b0
Show file tree
Hide file tree
Showing 29 changed files with 826 additions and 298 deletions.
2 changes: 1 addition & 1 deletion CNAME
Original file line number Diff line number Diff line change
@@ -1 +1 @@
havee.me
havee.me
8 changes: 0 additions & 8 deletions _data/blogroll.json
Original file line number Diff line number Diff line change
@@ -1,16 +1,8 @@
[
{
"title": "刘静的博客",
"url": "//upliu.net"
},
{
"title": "小天地,大世界",
"url": "//www.lyblog.net"
},
{
"title": "woodelf@Gentoo",
"url": "//blog.woodelf.org"
},
{
"title": "华米兹之家",
"url": "//zhaoyuxiang.cn"
Expand Down
File renamed without changes.
2 changes: 0 additions & 2 deletions _posts/2009-09-29-gentoo-installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -112,9 +112,7 @@ OK,准备工作完成。
en_US ISO-8859-1
en_US.UTF-8 UTF-8425
zh_CN.GB18030 GB18030
zh_CN.GBK GBK
zh_CN.UTF-8 UTF-8
zh_CN GB2312

更新环境

Expand Down
39 changes: 27 additions & 12 deletions _posts/2010-12-13-openssh.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,24 +36,41 @@ tags: [Openssh, Usage]

#### 创建密钥对

推荐 ed25519,已在 OpenSSH 6.5 中加入支持

ssh-keygen -t ed25519 -C "[email protected]"
ssh-keygen -t rsa -b 4096 -C "[email protected]"
# 或
ssh-keygen -t ecdsa -b 521 -C "[email protected]"
# 验证公钥指纹
ssh-keygen -E md5 -lf ~/.ssh/id_rsa.pub
# 从私钥创建公钥
ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub
# 修改私钥口令
ssh-keygen -p -f ~/.ssh/id_dsa


验证公钥指纹

ssh-keygen -E md5 -lf ~/.ssh/your_pubkey

从私钥创建公钥

ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/your_pubkey

修改私钥口令

ssh-keygen -p -f ~/.ssh/your_pubkey

#### 重新生成服务器密钥

rm -v /etc/ssh/ssh_host_*
ssh-keygen -A
systemctl restart ssh

或者手动生成各自需要的服务器密钥

ssh-keygen -q -N "" -t ed25519 -f /etc/ssh/ssh_host_ed25519_key
ssh-keygen -q -N "" -t rsa -b 4096 -f /etc/ssh/ssh_host_rsa_key
ssh-keygen -q -N "" -t ecdsa -b 521 -f /etc/ssh/ssh_host_ecdsa_key
ssh-keygen -q -N "" -t dsa -b 1024 -f /etc/ssh/ssh_host_dsa_key
ssh-keygen -q -N "" -t dsa -f /etc/ssh/ssh_host_dsa_key
systemctl restart ssh
# debian 用户可以用如下方式

debian 用户可以用如下方式

rm -v /etc/ssh/ssh_host_*
dpkg-reconfigure openssh-server # debian
systemctl restart ssh
Expand All @@ -68,7 +85,7 @@ tags: [Openssh, Usage]

Host hostname
IdentityFile ~/.ssh/your-private-key
HostName ip
HostName ip or domain
Port port
User username

Expand Down Expand Up @@ -126,8 +143,6 @@ ssh-agent 一般人用不到,不过还是挺有用的,概念不介绍了。
Protocol 2
Compression yes

好了,当你 `ssh host1` 之后,可以登陆同样公钥的第三台机器了。

#### ProxyCommand

不过,并不是所有的机子的公钥是一致的,但是有不得不使用其中一台作为跳板,那么我们就使用这个参数了
Expand Down
10 changes: 10 additions & 0 deletions _posts/2011-06-13-git-usage.md
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,16 @@ github 回滚
$ git gc --prune=0
$ git reflog expire --expire-unreachable=0 --all

获取最近 10 个 commit 历史

$ git clone --depth 10 https://github.com/user/repo.git

在本地已有项目上保留 10 个历史记录

$ git fetch origin --depth 10
# 如有冲突,则
$ git reset --merge refs/remotes/origin/master

#### commit 历史操作

永久删除历史文件
Expand Down
12 changes: 6 additions & 6 deletions _posts/2011-08-09-simple-method-for-mysql.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
layout: post
title: "MySQL 简单操作 (笔记)"
category: SQL
category: Other
tags: [MySQL, CLI]
---

Expand Down Expand Up @@ -244,23 +244,23 @@ or

备份molyx到文件molyx.sql

mysqldump -uroot -p molyx > /your/path/molyx.sql
mysqldump -uusername -ppassword molyx > /your/path/molyx.sql

备份全部数据

mysqldump -uroot -p --all-databases > /your/path/backup.sql
mysqldump -uroot -ppassword --all-databases > /your/path/backup.sql

备份molyx并压缩

mysqldump -u root -p molyx | gzip > /your/path/molyx.sql.gz
mysqldump -uusername -ppassword molyx | gzip > /your/path/molyx.sql.gz

将molyx.sql导入到数据库

mysqlimport -uroot -p < /your/path/molyx.sql
mysql -uusername -ppassword molyx < /your/path/molyx.sql

将压缩文件molyx.sql.gz中数据恢复到molyx库

gzip < molyx.sql.gz | mysql -uroot -p --database molyx
gzip < molyx.sql.gz | mysql -uusername -ppassword molyx

将文本数据导入数据库:

Expand Down
2 changes: 1 addition & 1 deletion _posts/2011-08-18-how-to-use-sqlite.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
layout: post
title: "SQLite 命令行程序说明"
category: SQL
category: Other
tags: [SQLite, CLI, Usage]
---

Expand Down
2 changes: 1 addition & 1 deletion _posts/2011-08-18-sqlite-command.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
layout: post
title: "SQLite 命令"
category: SQL
category: Other
tags: [SQLite, CLI, Usage]
---

Expand Down
2 changes: 1 addition & 1 deletion _posts/2011-09-08-php-sqlite-e-g.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
layout: post
title: "PHP SQLite 示例"
category: SQL
category: Other
tags: [PHP, SQLite, Usage]
---

Expand Down
2 changes: 1 addition & 1 deletion _posts/2011-09-08-php-sqlite-function.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
layout: post
title: "PHP SQLite 函数库"
category: SQL
category: Other
tags: [PHP, SQLite, Function]
---

Expand Down
98 changes: 74 additions & 24 deletions _posts/2012-07-18-gnupg-usage.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ GnuPG 是实现安全通信和数据存储的一系列工具集,可以做加
6. 支持多种加密算法
7. 支持扩展模块
8. 用户标识遵循标准结构
9. 多语言支持(尚未支持中文)
9. 多语言支持
10. 支持匿名信息接收
11. 支持HKP密钥服务

Expand All @@ -34,7 +34,7 @@ GnuPG 是实现安全通信和数据存储的一系列工具集,可以做加
- \[A\]: 用于身份认证
- \[C\]: 主密钥特有,用于认证子密钥

密钥算法,其中 ECC 算法,需要在生成密钥对命令时添加参数 --expert,顾名思义,专家模式
密钥算法

- RSA
- ElGamal
Expand All @@ -44,6 +44,8 @@ GnuPG 是实现安全通信和数据存储的一系列工具集,可以做加
- EdDSA
- ...

ECC 算法,在版本 2.1.0 ,支持 ed25519 数字签名,在版本 2.1.7 ,支持 curve25519 加密,需要在操作时时添加参数 `--expert`,顾名思义,专家模式

#### 二、命令

##### 创建主密钥对
Expand Down Expand Up @@ -79,17 +81,17 @@ GnuPG 是实现安全通信和数据存储的一系列工具集,可以做加
##### 私钥处理

$ gpg --armor --output filename.asc --export-secret-keys KEY_ID # 导出 ID 的主私钥,不加用户标志,则导出所有主私钥
$ gpg --armor --output filename.asc --export-secret-subkeys SUBKEY_ID # 导出 sub ID 的子密钥私钥
$ gpg --armor --output filename.asc --export-secret-subkeys SUBKEY_ID! # 导出 sub ID 的子密钥私钥
$ gpg --list-secret-keys|-K # 显示所有私钥

##### 其他

$ gpg --import Havee.asc # 导入私钥或公钥
$ gpg --import filename.asc # 导入私钥或公钥
$ gpg --delete-secret-and-public-key KEY_ID # 删除私钥和公钥
$ gpg --delete-secret-key KEY_ID # 删除私钥
$ gpg --delete-key KEY_ID # 删除公钥

$ gpg --edit-key Havee # 编辑密钥,要帮助输入 help
$ gpg --edit-key KEY_ID # 编辑密钥,要帮助输入 help
gpg> help
quit 退出此菜单
save 保存并退出
Expand Down Expand Up @@ -140,38 +142,86 @@ GnuPG 是实现安全通信和数据存储的一系列工具集,可以做加

##### 加密与解密

$ gpg -e -r Havee.asc filename # 使用 Havee 的公钥文件对 filename 加密,生成二进制 filename.pgp
$ gpg -ea -r Havee filename -o filename.asc # 同上,不过以 ASCII 方式输入结果,并输出 asc 文件
$ gpg -d filename.pgp -o filename # 对 filename.pgp 解密,保存为 filename
$ gpg -r filename.asc -e filename # 使用公钥文件对 filename 加密,生成二进制 filename.pgp
$ gpg -r KEY_ID -o filename.asc -ea filename # 同上,不过以 ASCII 方式输入结果,并输出 asc 文件
$ gpg -o filename -d filename.pgp # 对 filename.pgp 解密,保存为 filename

##### 打包方式进行签名与验证

$ gpg -s filename # 使用默认的用户对 filename 进行打包方式的签名
$ gpg -u Havee -s filename -o filename.sig # 使用指定的用户 Havee 对 filename 进行签名
$ gpg --verify filename.gpg # 验证签名
$ gpg -d filename.gpg -o filename # 解包并验证签名
$ gpg -s filename # 使用默认的用户对 filename 进行打包方式的签名
$ gpg -u KEY_ID -s filename # 使用指定的用户 KEY_ID 对 filename 进行签名
$ gpg --verify filename.gpg # 验证签名
$ gpg -o filename -d filename.gpg # 解包并验证签名

##### 分离方式进行签名与验证

$ gpg -sb filename
$ gpg -u Havee -sb filename
$ gpg -u Havee -o filename.sig -sb filename
$ gpg --verify filename.gpg filename
$ gpg -u KEY_ID -sb filename
$ gpg --verify filename.sig filename

##### 签名并加密

$ gpg -es -r Havee -u Havee -o filename.gpg filename # 使用 Havee 的公钥进行加密,并使用 Havee 的私钥进行签名,生成的二进制文件是 filename.gpg
$ gpg -esa -r Havee -u Havee -o filename.asc filename # 同上,加上以 ASCII 编码
$ gpg -r KEY_ID -es filename # 使用指定的公钥进行加密并签名,生成的二进制文件是 filename.gpg
$ gpg -r KEY_ID -o filename.asc -esa filename # 同上,加上以 ASCII 编码

##### mutt 中的使用
###### 签名加密时常用参数

-s, --sign # 签名
-b, --detach-sign # 分离式签名,文件与签名分开
-e, --encrypt # 加密
-d, --decrypt # 解密
-a, --armor # ascii 编码输出,一般与 -o file 搭配
-o, --output FILE # 输出文件
-r, --recipient USER-ID # 以特定的 ID 去加密
-u, --local-user USER-ID # 以特定的 ID 去签名或解密

##### 作为 ssh 公钥

如果想将 gpg 作为 ssh 公钥,则在创建子钥的时候,需要创建一个 [A] 用途的专用子钥。

编辑 **~/.gnupg/gpg-agent.conf**,加入

enable-ssh-support

编辑你的 **~/.bashrc****~/.zshrc**,加入如下,并最后重新载入下 **source ~/.bashrc****source ~/.zshrc**,原本写入 ssh-agent 相关的内容,也可以注释掉了

[[ -f /usr/bin/gpg-agent ]] && export GPG_TTY=$(tty)
[[ -n "$SSH_CONNECTION" ]] && export PINENTRY_USER_DATA="USE_CURSES=1"
unset SSH_AGENT_PID
if [ "${gnupg_SSH_AUTH_SOCK_by:-0}" -ne $$ ]; then
export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)
fi

编辑 **~/.ssh/config**,加入

Match host * exec "gpg-connect-agent updatestartuptty /bye > /dev/null"

获取子钥的 keygrip

编辑 `~/.gnupg/gpg.conf`,注销下面两行
$ gpg --with-keygrip --list-key KEY_ID

...
keyserver hkp://keys.gnupg.net
...
keyserver-options auto-key-retrieve
...
将对应子匙的 keygrip 插入到 **~/.gnupg/sshcontrol**

$ echo xxxxxxyour-keygripxxxxxx >> ~/.gnupg/sshcontrol

重启下 gpg-agent

$ gpg-connect-agent reloadagent /bye

接下来就可以检查下,ssh 验证列表中,是否存在公钥了

$ ssh-add -l

最后将上面的公钥添加到你的远程服务器,或 github 的 gpg 列表中即可

###### 针对 github

如果有多个项目处于 github 的不同账户中,你可能需要针对不同项目配置不同的密钥

gpg --export-ssh-key subkey! > .ssh/repo-1
git config --local core.sshCommand "ssh -i ~/.ssh/repo-1" # 项目文件夹内执行

##### mutt 中的使用

复制 mutt 示例配置文件至 mutt 配置目录

Expand Down
2 changes: 1 addition & 1 deletion _posts/2013-12-01-try-freebsd-again.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
layout: post
title: "再次尝试 FreeBSD"
category: "BSD"
category: "Other"
tags: [freebsd]
---

Expand Down
Loading

0 comments on commit cbeb4b0

Please sign in to comment.