小编Jak*_*uje的帖子

尝试通过 SSH 连接到服务器并获取 key_load_public:没有此类文件或目录错误

我从我的 mac 创建了一个到我的远程服务器的无密码 ssh 连接。它有效(!)然后我关闭了我的终端,重新打开它,再试一次,并得到以下(用户名,my_ip 不是真实的):

ssh -vvv username@my_ip
OpenSSH_7.2p2, LibreSSL 2.4.1
debug1: Reading configuration data /Users/Me/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 20: Applying options for *
debug1: /etc/ssh/ssh_config line 53: Applying options for *
debug2: resolving "my_ip" port 22
debug2: ssh_connect_direct: needpriv 0
debug1: Connecting to my_ip [my_ip] port 22.
debug1: Connection established.
debug1: identity file /Users/Me/.ssh/id_rsa type 1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/Me/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such …
Run Code Online (Sandbox Code Playgroud)

ssh

57
推荐指数
2
解决办法
23万
查看次数

我可以强制 dnf 安装旧版本的软件包吗?

我想安装一个旧版本的package <x>,当我使用dnf它时只显示当前版本的package <x>.

有没有办法安装旧版本dnf

fedora package-management dnf

53
推荐指数
3
解决办法
9万
查看次数

运行ssh命令时如何设置PATH?

假设用户/bin/bash/etc/passwd. 然后ssh user@host command使用 Bash 运行命令。但是,该 shell 既不是登录也不是交互式的,这意味着既不是~/.bash_profile也不~/.bashrc是来源。在这种情况下如何设置PATH环境变量以便可以找到并执行可执行文件?是否建议在实际命令前加上source ~/.bashrc?

bash ssh

29
推荐指数
2
解决办法
5万
查看次数

如何阻止 xargs 错误地合并多个进程的输出?

我正在使用xargs选项--max-args=0(或者-P 0)。

然而,进程的输出被合并到stdout流中而不考虑适当的行分离。所以我经常会以这样的行结束:

<start-of-line-1><line-2><end-of-line-1>
Run Code Online (Sandbox Code Playgroud)

当我在整个输出的模式中使用egrepwith 时^xargs这弄乱了我的结果。

有没有办法强制xargs按顺序写入进程输出(任何顺序,只要一个进程的输出是连续的)?

或者其他一些解决方案?

编辑:有关用例的更多详细信息:

我想从不同的主机下载和解析网页。由于每个页面都需要大约一秒钟的时间来加载,并且有几十个页面我想并行化请求。

我的命令具有以下形式:

echo -n $IPs | xargs --max-args=1 -I {} --delimiter ' ' --max-procs=0 \
wget -q -O- http://{}/somepage.html | egrep --count '^string'
Run Code Online (Sandbox Code Playgroud)

我使用 bash 而不是 Perl 之类的东西,因为主机 IP($IPs 变量)和其他一些数据来自包含的 bash 文件。

process io xargs parallelism

22
推荐指数
2
解决办法
7100
查看次数

如何为 SSH 客户端列出可用的主机密钥算法?

所以 ssh 有选项HostKeyAlgorithms。示例用法:

ssh -o "HostKeyAlgorithms ssh-rsa" user@hostname
Run Code Online (Sandbox Code Playgroud)

我试图让客户端使用服务器ecdsa密钥进行连接,但我找不到正确的字符串。

我可以使用什么命令来获取可用的列表HostKeyAlgorithms

ssh openssh

19
推荐指数
3
解决办法
6万
查看次数

如何查看命令的源代码?

我突然决定要查看“回声”的源代码

$ which echo
/usr/bin/echo
Run Code Online (Sandbox Code Playgroud)

所以

$ ls -al /usr/bin/echo
-rwxr-xr-x. 1 root root 32536 Oct 31  2016 /usr/bin/echo
Run Code Online (Sandbox Code Playgroud)

所以

$strings /usr/bin/echo
Run Code Online (Sandbox Code Playgroud)

让我相信这是一个编译的 C 程序

现在我被困住了。

我如何能:

  1. 找出它在哪个包中

  2. 获取源码

  3. 重建它

  4. 测试一下

  5. 在系统范围内安装新版本

(我知道 5 不是一个好主意,我只是好奇……)

我目前在 Fedora 上,但我也对 Debian 的答案感兴趣

相关教程的链接将是一个很好的答案。


编辑:

$ type -a echo
echo is a shell builtin
echo is /usr/bin/echo
Run Code Online (Sandbox Code Playgroud)

所以我想这是/usr/bin/echo我想看的而不是试图阅读整个bash.

fedora debian source-code

13
推荐指数
2
解决办法
5194
查看次数

使用 apt 安装已安装软件包的推荐软件包

我之前安装了一个带有 的包,--no-install-recommends现在由于缺少这些包而缺少一些功能。有没有办法在apt-get不完全卸载的情况下使用命令安装这些包(因为这也会删除过多的依赖包)?

我知道我可以apt-cache depends *packagename* | grep Recommends用来获取这些包的列表,然后我可以手动安装并手动设置为自动安装。但是我想知道您是否可以使用 apt-get 自动执行此操作。

apt software-installation

12
推荐指数
1
解决办法
3777
查看次数

使用带有 --noask 选项的钥匙串保存 SSH 密钥密码

我想使用钥匙串来管理 SSH 密钥的密码提示,但它应该 1) 仅在我实际使用密钥时询问它,并且 2) 之后将其保存一段时间。目前我有2个选择:

  1. $ eval `keychain --eval --agents ssh id_rsa` -- 这将始终在启动时要求密码短语,但随后会保存它。
  2. $ eval `keychain --eval --noask --agents ssh id_rsa` - 启动时不会要求任何东西,但每次我使用该密钥时都会要求输入密码。

有什么方法可以结合这些方法的优点吗?

ssh ssh-agent

12
推荐指数
1
解决办法
2700
查看次数

穷人的 GNU Parallel 在 ksh 中实现?

我想使用GNU 并行的功能,它可以并行执行命令和列表,并在完成后将其吐出,但是,我不想在我们所有的服务器上安装 GNU 并行。

或者也许是xargs?

是否有 GNU Parallel 的 ksh 实现?在这种情况下,它不必像 GNU Parallel 那样按顺序完成——只要所有输出都可以通过管道传输或存储即可。我还想避免使用临时文件。

ksh gnu parallelism gnu-parallel

8
推荐指数
1
解决办法
1092
查看次数

网络命名空间、ssh、X11

ssh -Y ...从一台机器(=客户端)连接(通过)到另一台机器(=服务器,实际上在我的局域网中,但它无关紧要);然后我在服务器上启动一个新的网络命名空间(简称 NNS),我启动一个 xterm(来自默认命名空间),它完美地显示在我的客户端上,最后,从 xterm 中,我加入了非默认 NNS ,

ip netns exec NNSName bash
Run Code Online (Sandbox Code Playgroud)

我可以检查我是否在新的 NNS 中,

ip netns identify $$
Run Code Online (Sandbox Code Playgroud)

我可以在新的 NNS 中运行复杂的程序,例如 OpenVPN。

问题就在这里:我想xeyes从新的 NNS 中启动一个图形应用程序(即使只是暂时),但我不能,我总是被告知:Unable to open DISPLAY=...

诚然,我只尝试了显而易见的:

DISPLAY=:0.0
DISPLAY=:10.0
DISPLAY=localhost:10.0
DISPLAY=localhost:20.0
DISPLAY=ClientName:10.0
DISPLAY=ClientIPAddress:10.0
Run Code Online (Sandbox Code Playgroud)

始终xhost +在客户端上,用于纯调试目的。

我没有问题:

  1. 通过ssh -Y ....从客户端连接到服务器,xeyes在服务器上运行并在客户端上显示它;

  2. 在服务器上启动一个新的 NNS,并在 NNS 中启动要显示在服务器上的图形应用程序(,在这种情况下忘记客户端)。

当我将这两个东西(ssh 和命名空间)放在一起时,我无法在服务器的新 NNS 中运行的客户端应用程序上显示。

看起来标准的 TCP 端口 6010 属于默认 NNS 的 ssh 会话,而新的 NNS 应该有自己的。我当然可以在新的 NNS 中启动一个 ssh 服务器并直接从客户端连接到服务器的新 …

ssh xorg x11 network-namespaces

8
推荐指数
1
解决办法
2372
查看次数