在尝试启动 ssh 服务器守护程序时,我收到有关缺少主机密钥的错误,但是,查看后/etc/ssh发现主机密钥在那里,并且我相信权限是正确的。
这是嵌入式 Linux 系统上的 OpenSSH 8.3p1。
\n对我的 OpenSSH 配置有什么问题有什么想法吗?
\n~> ls -l /etc/ssh\ntotal 529\n-rw-r--r-- 1 root root 525809 Mar 30 15:16 moduli\n-rw-r--r-- 1 root root 1484 Mar 30 15:16 ssh_config\n-rw------- 1 root root 1369 Mar 30 19:02 ssh_host_dsa_key\n-rw-r--r-- 1 root root 600 Mar 30 19:02 ssh_host_dsa_key.pub\n-rw------- 1 root root 505 Mar 30 19:02 ssh_host_ecdsa_key\n-rw-r--r-- 1 root root 172 Mar 30 19:02 ssh_host_ecdsa_key.pub\n-rw------- 1 root root 399 Mar 30 19:02 ssh_host_ed25519_key\n-rw-r--r-- 1 root root …Run Code Online (Sandbox Code Playgroud) 我有一个 CentOS 5.7 Web 服务器,我想更改使用 SSH 连接时登陆的默认位置。
目前我登陆/home/username,我想登陆/home。
我已经以 root 身份进入并添加PermitUserEnvironment yes到/etc/.ssh/sshd_config- 据我所知,这会扫描用户自己的ssh文件夹以查找environment文件。我不确定的是我要添加到这个环境文件中的内容,因为export path=$PATH:$HOME似乎不起作用,无论是在这里还是在我的 .bashrc 或 .bash_profile 文件中(据我所知,这不会有什么不同)无论如何,因为 SSH 连接是非交互式 shell?)。
提前致谢。
我正在运行以下命令,并监视另一个系统上的输出文件:
ssh $ip_address 'for n in 1 2 3 4 5; do sleep 10; echo $n >>/tmp/count; done'
Run Code Online (Sandbox Code Playgroud)
如果我使用^C或仅通过终止我登录的终端来终止ssh 命令,我希望远程命令也终止。但是,这不会发生:/tmp/count无论如何都会获取所有数字 1-5,并ps -ejH显示 shell 及其sleep子项继续运行。
这是预期的行为吗,是否在任何地方都有记录?我可以禁用它吗?通过阅读,我希望必须使用 nohup 显式启用这种行为,而不是让它成为默认值。
我查看了 ssh 和 sshd 的手册页,但没有发现任何明显的内容,Google 向我指出了打开此行为的说明,而不是关闭它的说明。
我正在运行 Red Hat Enterprise Linux 6.2,两个系统上都有 root 登录名和 bash shell。
当我登录到 SSH 服务器/主机时,我被问到其公钥的哈希值是否正确,如下所示:
# ssh 1.2.3.4
The authenticity of host '[1.2.3.4]:22 ([[1.2.3.4]:22)' can't be established.
RSA key fingerprint is SHA256:CxIuAEc3SZThY9XobrjJIHN61OTItAU0Emz0v/+15wY.
Are you sure you want to continue connecting (yes/no)? no
Host key verification failed.
Run Code Online (Sandbox Code Playgroud)
为了能够比较,我之前在SSH服务器上使用了这个命令,并将结果保存到客户端上的一个文件中:
# ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub
2048 f6:bf:4d:d4:bd:d6:f3:da:29:a3:c3:42:96:26:4a:41 /etc/ssh/ssh_host_rsa_key.pub (RSA)
Run Code Online (Sandbox Code Playgroud)
出于某种重要原因(毫无疑问)这些命令中的一个使用了不同的(更新的?)显示哈希的方式,从而极大地帮助了中间人攻击者,因为它需要一个非平凡的转换来比较这些。
我如何比较这两个散列,或者更好:强制一个命令使用另一个的格式?
该-E选项ssh-keygen不可用在服务器上。
如果我运行这样的东西:
ssh -4 -f -N -T -R "/home/dude/lol.socket:192.168.4.44:4444" dude@someserver -p 22 -i privatekey -o "ExitOnForwardFailure yes" -o ConnectTimeout=5 -o ConnectionAttempts=3 -o ServerAliveInterval=15 -o
Run Code Online (Sandbox Code Playgroud)
然后让我们说连接因任何原因关闭或死亡..说计算机由于维护或错误或互联网连接问题或其他原因重新启动 - >我们有一个大问题。sshd 不会删除/home/dude/lol.socket在 上创建的套接字文件someserver。因此,当反向隧道启动器正在恢复并尝试重新创建隧道时,它不能,因为:
Error: remote port forwarding failed for listen path /home/dude/lol.socket
Run Code Online (Sandbox Code Playgroud)
在服务器端,你会得到类似的东西:
error: bind: Address already in use
error: unix_listener: cannot bind to path: /home/dude/lol.socket
Run Code Online (Sandbox Code Playgroud)
断开连接后清理套接字的支持方式/最佳黑客是什么?这是 sshd 中的一个错误,如果/当注意到断开连接时,它不应该自动执行此操作吗?
使用套接字背后的想法很简单,服务器将处理 n 个“伙计”,在任何端口为 m 个“大声笑”服务创建反向隧道,并且使用套接字可以更轻松地确保“伙计”只能访问和绑定到他自己的插座,而不是其他人的插座。它还使我不必记录哪个家伙使用哪个端口来公开哪个服务。当老兄想连接到其他服务器上的服务时,他只需要知道服务的名称并将其绑定到某个随机的本地端口(如果他愿意,也可以使用套接字)即
ssh -v -i -4 -N -T -L "127.0.0.1:3334:/home/dude/lol.sock" -p 22 dude@someserver -o "ExitOnForwardFailure yes" -o ConnectTimeout=5 …
我对 sshd 中的“MaxSessions”参数有问题。
我想通过一个 ssh 连接限制会话数。例如用于 tcp 转发。
当我将 MaxSessions 设置为 0 时,登录不起作用(很好,这就是它应该如何工作)但是当我设置为 1 时,我可以通过一个 ssh 连接进行多个会话(甚至 1 禁用多路复用)并将其设置为 2 或更多也没有效果。
也许你可以指导我找到正确的解决方案。
我是这样测试的:打开从 putty (win) 到服务器 (BSD) 的 ssh 连接。正在使用端口转发(用于 http)。所以我在浏览器中使用 SOCKS。
我同时从两个不同的网站下载了两个文件,它通过这个隧道对这两个文件都有效,但不应该(MaxSessions 设置为 1)。
感谢您的任何帮助。
这已经是一个令人恼火的问题,现在我想我最终会向整个社区询问可能的解决方案是什么。更令人恼火的是,我似乎是唯一遇到此问题的人。
本质上,任何时候在 CentOS 7.x、sshd 配置或 sshd 的任何部分被修改,守护进程在接下来的 3 分钟内在某个“随机点”重新启动/重新加载,ssh 连接全部重置,然后该服务器是通过 ssh 几秒钟无法访问。
这对于 ansible 来说尤其是一个问题,因为它有时需要自己对 sshd 进行这些更改,并且还需要重新加载它(例如在新的 CentOS 7x 服务器构建中)。但是在将来播放时,它只是随机无法连接到 ssh,并且它会炸毁该主机的其余剧本/播放,但未能联系到该主机。这对于大型主机模式尤其不利,因为其中一些会随机完成,但在 sshd 被操纵后,其他的会在剧本的各个阶段失败。值得注意的是,在 CentOS 5x、6x 甚至 Solaris 上都不会发生这种情况。
为了避免这种情况,我能做的最好的事情是在对 sshd 进行任何更改后创建 90 秒的等待时间,即使这也不是完全万无一失的。如果调用 7-8 次,它会使这些剧本需要 20 多分钟才能运行。
以下是有关此环境的一些事实:
所有新安装都来自官方 ISO DVD。每台服务器都是 hyper-v 2012 来宾每台有这个问题的服务器都是 CentOS 7.x
以下是问题的一些实际输出和一些陈腐的解决方案:
失败:
fatal: [voltron]: UNREACHABLE! => {"changed": false, "msg": "All items completed", "results": [{"_ansible_item_result": true, "item": ["rsync", "iotop", "bind-utils", "sysstat.x86_64", "lsof"], "msg": "Failed to connect to the host via ssh: Shared connection to voltron …Run Code Online (Sandbox Code Playgroud) 我正在尝试阻止(减慢)对我的 sshd 服务器的暴力攻击。我正在遵循本指南http://www.rackaid.com/resources/how-to-block-ssh-brute-force-attacks/基本上说我只需要输入下面的 2 个命令。
sudo iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --set
sudo iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP
Run Code Online (Sandbox Code Playgroud)
我的 sshd 端口是 6622,所以我将条目从“22”更改为“6622”,并将这些命令放入。然后我尝试简单地测试新的 iptables。我去了另一台电脑,故意输入错误的登录密码几次。不幸的是,新规则似乎并没有阻止我随心所欲地尝试。下面列出的是我目前的规则。我究竟做错了什么?
# iptables --list
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP tcp -- anywhere anywhere tcp dpt:6622 state NEW recent: UPDATE seconds: 60 hit_count: 4 name: …Run Code Online (Sandbox Code Playgroud) 我的目标是允许 10000 个并发ssh在单个服务器上运行。
为简单起见,我使用 ssh 连接到本地主机:
for i in `seq 1 10000`; do
ssh localhost "echo ${i}; sleep 100" >>./info 2>>./log &
done
Run Code Online (Sandbox Code Playgroud)
sleep 100是为了确保当第 10000 个 ssh 开始时,第一个 ssh 仍在连接中,因此确实有 10000 个并发 ssh s。
这是我收到的两种错误消息:
1. ssh_exchange_identification: Connection closed by remote host
2. ssh_exchange_identification: read: Connection reset by peer
Run Code Online (Sandbox Code Playgroud)
我做了以下修改:
/etc/security/limits.confand 中/etc/security/limits.d/90-nproc.conf,将 soft&hard nofile&设置nproc为 65535(这是可能的最大值,对吗?- 更新:否。最大值为1048576)/etc/sysctl.conf,设置kernel.pty.max = 65535/etc/ssh/sshd_config …ssh&scp在我的台式机和笔记本电脑上工作。从我的 Android 手机上的 termuxssh可以运行,但scp不能运行。在这种情况下,我收到有关“连接已关闭”的错误。
最初,当我问这个问题时,我在连接到我的 Fedora Linux 盒子时在 Android 手机上从 termux 运行 scp 时遇到了这个问题。我很困惑,因为ssh一直在工作,所以我提供了很多调试信息。由于我后来了解到这个问题与 termux 完全无关,而与 OpenSSH 版本无关,因此我尝试清理大量无关的信息转储并使其更易于访问,同时仍然保留相关错误消息以实现更好的 seo 匹配。
计算机 A 和 B 具有基本相同的sshd_config文件,所有 3 台计算机的文件内容基本相同~/.ssh/config。
A->B、B->A、C->A 和 C->B 之间的 ssh 连接都工作正常。我对从任何一台计算机连接到我的手机不感兴趣,并且从未在其上配置 sshd,因此没有测试该场景。
但是,对于通过 ssh 运行的 scp,我遇到了以下情况:A->B 和 B->A 工作,而 C->A 和 C->B 失败并出现以下错误:
$ scp -rp …Run Code Online (Sandbox Code Playgroud)