好的,我了解如何apt-get {install|upgrade|remove} mypackages安装、升级或删除二进制文件以及它们的配置数据文件和依赖项(实际上,remove除非提供额外的标志,否则只会删除二进制文件)。
我不是在寻找它是如何用作 man描述这一点,而是它在做什么的高级别的。我的最终目标是为我创建一种在多台远程计算机上安装和管理一些自定义软件(由 make 文件创建)的方法,我需要了解有关该过程的更多信息。如果这个问题的答案是基于所使用的发行版,请根据 Debian 进行调整。
除了它的工作原理之外,我还有以下具体问题:
.deb文件指定的吗?执行后apt-key list,我看到一个我想删除的键。
...
pub rsa2048 2017-11-24 [SC]
3241 413F 3CE0 B919 E82F DCA0 6239 92CF C9A9 7C2C
uid [ unknown] John Doe <john.doe@gmail.com>
sub rsa2048 2017-11-24 [E]
...
Run Code Online (Sandbox Code Playgroud)
man apt-key告诉我我可以通过执行删除一个键apt-key del keyid。它还告诉我list(又名finger)将列出带有指纹的可信密钥,所以我假设这3241 413F 3CE0 B919 E82F DCA0 6239 92CF C9A9 7C2C是指纹而不是 keyid。我弄乱了gpg --list-keysand gpg --list-public-keys,但是,它没有列出任何键,而是~/.gnupg/使用各种不显示键 ID 的非文本文件创建。
如何识别密钥 ID 以便我可以删除密钥?
附注。在问这个问题之前,我搜索了一个解决方案,有些人建议不要使用“short key ids”。如果我不应该按照 描述的 keyid 删除密钥man apt-key,请提供适当的方式。
我希望每 10 秒执行一次命令,并在后台执行它(从而消除watch?)。所有答案都显示如下内容,但这将执行 11 到 14 秒。如何做到这一点?
while true; do
# perform command that takes between 1 and 4 seconds
sleep 10
done
Run Code Online (Sandbox Code Playgroud) -n用作 grep 参数来显示行号,但-H不适用于文件名。我认为这是因为git diff默认情况下不会为每个更改的行输出文件名。在我打字时,我考虑了显示多行的另一种选择,它解决了我的直接问题,但仍然想知道显示实际文件名的解决方案。
[michael@bigbox www]$ git diff | grep -n -H "this->config"
(standard input):614:- $config=json_decode($this->config,true);
[michael@bigbox www]$
Run Code Online (Sandbox Code Playgroud) 只是偶尔,我忘了做一个给定的linux文件,如备份/etc/rc.local,/etc/rsyslog.conf,/etc/dhcpcd.conf,等,以后想我做到了。与分发无关,是否有一种好方法可以稍后获取未修复副本的副本?
我可以按如下方式克隆一个项目:
$ git clone git@mysite.com:root/myproject.git ~/bla
Run Code Online (Sandbox Code Playgroud)
但现在我想将它克隆到/var/www. 所以我尝试
$ git clone git@mysite.com:root/myproject.git ~/var/www
Run Code Online (Sandbox Code Playgroud)
但是,唉,我无权写入/var/www. Sudo 来救援!
$ sudo git clone git@mysite.com:root/myproject.git ~/var/www
Cloning into 'www'...
git@mysite.com's password:
Run Code Online (Sandbox Code Playgroud)
这是什么?我被要求输入密码?我们不应该不需要臭密码!
我显然是将 root 用户的 ssh 密钥与请求一起发送,但由于它们尚未导入到 git 存储库中,因此我被拒绝了。过去,我的解决方案是临时更改文件夹的权限或先将其克隆到我有权访问的某个位置,然后使用 sudo 移动它,但我想了解这样做的正确方法。
那么......我如何使用普通用户的 ssh 密钥但 sudo 文件权限使用 git?
apt-get抱怨签名无效且InRelease文件未签名(请参阅使用 Centos 对 .deb 包进行签名以了解背景)。在服务器上,我已经验证使用gpg它InRelease实际上已签名。
根据Debian 9、APT 和 "GPG error: ... InRelease: The following signatures was invalid:",需要执行以下操作:
调整 $HOME/.gnupg/gpg.conf 中的personal-digest-preferences 和personal-digest-preferences 以从GPG 偏好中消除SHA-1。这可以防止问题再次出现在新密钥上。
在查看我的 reprepro 设置后,我在 Release 文件(和 InRelease clearsign 签名)和单个 Packages 文件下都显示了 SHA1,所以我希望这样做会成功。
~/.gnupg/gpg.conf似乎表明我将使用 , 中描述的哈希算法default-preference-list,然后列出首先使用的算法(如果可用)。
[michael@bigbox ~]$ cat ~/.gnupg/gpg.conf
# Prioritize stronger algorithms for new keys.
default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 BZIP2 ZLIB ZIP Uncompressed
# Use a …Run Code Online (Sandbox Code Playgroud) 尝试创建将用于托管在我的 Centos7 机器上的 apt 存储库的 GPG 密钥。我创建了一个新用户“apt”,然后尝试创建密钥,但最后,它指出我需要一个密码短语,但随后立即关闭说明被用户取消。不,不是!
从那以后,我成功地重复了这些相同的步骤 root 并作为我的标准用户名,它恰好在轮组中。
两个问题:
谢谢
[apt@devserver ~]$ gpg --gen-key
gpg (GnuPG) 2.0.22; Copyright (C) 2013 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Please select what kind of key you want:
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (sign only)
(4) …Run Code Online (Sandbox Code Playgroud) 客户端通过 tcp 套接字使用 ssl (openssl) 连接到服务器。
如果没有正在进行的通信,2 小时后(加上几分钟),客户端会抱怨“套接字错误。对等方重置连接”。
我已经通过让客户端在收到此警告时打开新连接的方式进行了几天的测试,并且该模式每两个小时重复一次。我已经查看了客户端和服务器上的 cron 作业,但看不到任何可能正在执行此操作的作业。
请注意,套接字服务器 (reactphp) 不知道套接字曾经被关闭。
什么可能导致连接每两小时重置一次?是否有可能这样做的内核配置设置?
我了解如何将我的公共 ssh 密钥放入另一台计算机的授权密钥中,ssh-copy-id前提是我有远程计算机的用户名/密码。
反过来怎么可能呢?获取一些远程计算机的公钥(不需要密码,因为它是公共的)并将其放入我自己的授权密钥中(同样,不需要密码,因为它是我的)。
我对 RSA 指纹的理解是它基本上是一个哈希密钥。
我对转发端口的理解是根据以下部分man ssh:
-R [bind_address:]port:host:hostport
Specifies that the given port on the remote (server) host is to
be forwarded to the given host and port on the local side. This
works by allocating a socket to listen to port on the remote
side, and whenever a connection is made to this port, the connec?
tion is forwarded over the secure channel, and a connection is
made to host port hostport from the local machine.
Run Code Online (Sandbox Code Playgroud)
使用 ssh …
我希望使以下安装永久化:
[michael@devserver ~]$ findmnt | grep public
??/home/jail/home/public/repo /dev/mapper/centos-root[/home/michael/testing/gateway/repo] xfs ro,relatime,attr2,inode64,noquota
[michael@devserver ~]$
Run Code Online (Sandbox Code Playgroud)
我使用以下方法创建了这个安装:
sudo mkdir /home/jail/home/public/repo
sudo mount --bind /home/michael/testing/gateway/repo /home/jail/home/public/repo
sudo mount -o remount,ro,bind /home/jail/home/public/repo
Run Code Online (Sandbox Code Playgroud)
我/etc/fstab目前看起来如下。我希望,我应该只是补充/home/michael/testing/gateway/repo /home/jail/home/public/repo xfs ro,relatime,attr2,inode64,noquota 0 0到/etc/fstab,但在这样做,我的服务器扼流圈和我有紧急模式去删除这条线/etc/fstab。永久绑定挂载目录以进行只读访问的正确方法是什么?
[michael@devserver ~]$ cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Fri Apr 8 14:15:42 2016
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info …Run Code Online (Sandbox Code Playgroud) 我最近在多台机器上使用dd. 我的命名并没有做得很好,并且有一些重复。如何快速确定两个图像是否相等?我一直在使用,diff但需要一段时间。
gpg ×3
apt ×2
debian ×2
git ×2
ssh ×2
apt-key ×1
aptitude ×1
bash ×1
bind-mount ×1
centos ×1
dd ×1
diff ×1
disk-image ×1
encryption ×1
etc ×1
files ×1
fstab ×1
gnu ×1
grep ×1
hashsum ×1
iso ×1
linux ×1
lvm ×1
mount ×1
permissions ×1
repository ×1
security ×1
shell ×1
shell-script ×1
signature ×1
sleep ×1
socket ×1
ssl ×1
sudo ×1
tcp ×1
watch ×1