我正在尝试将我的 gpg 密钥从一台机器复制到另一台机器。
我愿意:
gpg --export ${ID} > public.key
gpg --export-secret-key ${ID} > private.key
Run Code Online (Sandbox Code Playgroud)
将文件移动到新机器,然后:
gpg --import public.key
gpg: nyckel [ID]: public key [Name, e-mail] was imported
gpg: Total number of treated keys: 1
gpg: imported: 1 (RSA: 1)
gpg --allow-secret-key-import private.key
sec [?]/[ID] [Creation date] [Name, e-mail]
ssb [?]/[SUB-ID] [Creation date]
Run Code Online (Sandbox Code Playgroud)
对我来说一切都很好,但是:
$ gpg -d [file].gpg
gpg: encrypted with 4096-bit RSA-key, id [SUB-ID], created [Creation date]
[Name, e-mail]
gpg: decryption failed: secret key not accessible
Run Code Online (Sandbox Code Playgroud)
因此,错误消息表明该文件已使用 [SUB-ID] 加密,密钥导入似乎表明已导入该文件。(两个消息中的 [SUB-ID] …
我有一个服务,保持某个端口打开。
我正在获取数据,我既不希望也不想得到,我正试图确定这些数据的来源。那么如何找到哪个进程将数据发送到特定端口,而不是哪个进程正在侦听。
在 shell 脚本中,如何在不实际尝试修改文件的情况下轻松且非侵入性地测试对文件的写访问权限?
我可以解析 的输出stat
,但这看起来非常复杂,而且可能很脆弱,尽管我不确定不同实现和时间的 stat 输出有多少不同。
我可以附加到文件的末尾,看看是否成功,但这有潜在危险,我能想到的两个原因是:
我正在更换镜像 btrfs 中出现故障的硬盘。
btrfs device delete missing /[mountpoint]
需要很长时间,所以我认为它实际上是将数据重新平衡到替换驱动器。
有没有办法监控这样的操作的进度?
我不一定期望漂亮的 GUI,甚至 % 计数器;如果有必要,我愿意编写几行 shell 脚本,但我什至不知道从哪里开始寻找相关数据。btrfs filesystem show
例如只是挂起,大概是等待平衡操作完成,然后才显示有关镜像文件系统的任何信息。
我正在从存储我的密钥的机器通过 SSH 连接,转发到第二台机器,然后尝试使用 tmux 中的密钥。进入 tmux 时,我似乎“松开”了转发。如何“再次转发”以便我可以在 tmux 中使用我的密钥?
$ ssh [server] -o ForwardAgent=yes
$ git pull # Succeeds.
$ /bin/bash
$ git pull # Still succeeds, despite new shell.
$ exit
$ tmux attach
$ git pull # Permission denied (publickey)
Run Code Online (Sandbox Code Playgroud) 典型场景:
我暂时需要访问我的虚拟主机阻止我访问的文件。我启动 vim,编辑设置和后台 vim 以告诉 apache 重新加载其配置。
问题:
如果我现在忘记了这一点,当我 CTRL+D 会话时,我的 shell 会告诉我“有停止的作业”。但是,由于我有在shell中shell中有shell的习惯,由于ssh,tmux等类似,我也经常在我结束工作并关闭我的windows时反复发送EOF。尽管有警告,这反过来又导致我不小心杀死了外壳。
我可以让杀死这些贝壳变得更难吗?
我有一条消息,我知道用于加密它的密码和密码,但我不知道如何要求 openssl 对其进行解密。
我在ciphers
命令的输出中看到了密码,手册页列出了 的enc
命令Encoding with Ciphers
,但我找不到相反的方法,对消息进行解码。
我正在尝试将 gpg 相关文件从旧机器复制到新机器。
我已经弄清楚如何复制密钥:How to import Secret gpg key (copiesd from one machine to another)?但这让 gpg 抱怨它不信任导入的密钥。
如何将信任数据库从一台机器转移到另一台机器?
我向某人询问他们的公钥,并将其添加到我的服务器中。
当他们第一次连接到服务器时,他们会得到以下形式的标准消息
The authenticity of host '[host]' can't be established.
# RSA key fingerprint is [fingerprint].
Run Code Online (Sandbox Code Playgroud)
我如何找出我的钥匙的指纹是什么,以便我可以预先提供它?
在我的 256 GB 光盘上:
# btrfs fi show /dev/sdd3
Total devices 1 FS bytes used 143.43GiB
devid 1 size 234.22GiB used 234.22GiB path /dev/sdd3
Btrfs v3.12
Run Code Online (Sandbox Code Playgroud)
我不明白“143.43GiB”和“已用 234.22GiB”之间的差异。我想,也许我有重复的数据,但我读这个的方式:
# btrfs filesystem df /
Data, single: total=230.20GiB, used=142.32GiB
System, DUP: total=8.00MiB, used=32.00KiB
System, single: total=4.00MiB, used=0.00
Metadata, DUP: total=2.00GiB, used=1.19GiB
Metadata, single: total=8.00MiB, used=0.00
Run Code Online (Sandbox Code Playgroud)
我的数据只存储一次,“单一”,我不明白剩余的大约 100 GiB 被用在哪里。引用自btrfs wiki:
single - 数据使用情况与单个设备上的原始块组使用情况匹配(数据 = 原始;1GB 数据需要 1GB 磁盘
挂载信息:
# mount | grep sdd3
/dev/sdd3 on / type btrfs (rw,noatime,ssd,noacl,space_cache)
Run Code Online (Sandbox Code Playgroud) 我有一个程序在正常激活下侦听某个端口。
我不希望程序连续运行。
是否有一种“快速而肮脏”的方法可以将应用程序包装在 shell 脚本或类似的脚本中,以监控适当的端口,并按需启动服务?
最简单的方法可能会导致连接失败,因为包装器必须释放端口,然后启动应用程序。但是,如果客户端在短时间内再次连接,则一切正常。
但如果这一切对客户完全透明,当然会更好。
btrfs ×2
gpg ×2
networking ×2
shell ×2
ssh ×2
bash ×1
command-line ×1
daemon ×1
files ×1
monitoring ×1
openssl ×1
permissions ×1
process ×1
scripting ×1
shell-script ×1
tcp ×1
tmux ×1
udp ×1