Sta*_*ler 2 linux ssh scp openssh
我有一个小型应用程序,它试图执行十几个并行的“scp”运行,从远程系统中提取文件。通常情况下,它运行良好。有时,一两个运行的SCP会悄然死去。(如果从 Linux 拉取,则“安静”。如果从 HP-UX 拉取,我会收到一条消息,例如“连接已被对等方重置”。)
如果我将“-v”添加到我的 scp 命令中,那么当发生故障时,我会看到我收到“ssh_exchange_identification:读取:连接由对等方重置”(在 Linux 上......还没有在 HP 上尝试过 -v -用户体验)。
这是典型运行的“scp -v”输出,其中指出了“坏”运行和“好”运行的分歧点:
Executing: program /usr/bin/ssh host wilbur, user (unspecified), command scp -v -p -f /home/sieler/source/misc/[p-q]*.[ch]
OpenSSH_6.9p1, LibreSSL 2.1.8
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 51: Applying options for *
debug1: Connecting to wilbur [10.84.3.61] port 22.
debug1: Connection established.
debug1: identity file /Users/sieler/.ssh/id_rsa type 1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/sieler/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/sieler/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/sieler/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/sieler/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/sieler/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/sieler/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/sieler/.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.9
到目前为止,“坏”和“好”运行匹配,然后......
坏的:
ssh_exchange_identification: read: Connection reset by peer
好的:
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
debug1: match: OpenSSH_5.3 pat OpenSSH_5* compat 0x0c000000
debug1: Authenticating to wilbur:22 as 'sieler'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr umac-64@openssh.com none
debug1: kex: client->server aes128-ctr umac-64@openssh.com none
...
尽管脚本和 scp 运行的常用主机是运行 OS X 10.11.4 的 Mac,但问题已在 Mac/Linux/HP-UX 的多种组合之间重现(足以排除它是 Mac 或HP-UX 特定问题)。
IIRC,使用scp从 Linux 拉取到 Mac 时遇到了问题,从 HP-UX 拉取到 Mac 以及从 Linux 拉取到 HP-UX 也遇到了问题。
还没有尝试过从 Mac 或 HP-UX 迁移到 Linux。
//是否存在scp并行使用有时会失败的ssh情况?openssh
sshd如果我在Linux系统上运行-ddd,那么恶魔在第一次scp访问它后就会停止(scp没有问题),而其他十一次scp运行都会失败。
谢谢
这可能是由并行会话的限制引起的sshd_config。默认情况下,服务器配置为“随机提前丢弃”,这意味着如果活动量大于某个限制,则拒绝新连接。负责任的选项是MaxStartups(来自 man sshd_config):
\n\n最大创业公司
\n指定 SSH 守护程序的并发未经身份验证连接的最大数量。
\nLoginGraceTime在身份验证成功或连接过期之前,其他连接将被删除。默认值为 10:30:100。或者,可以通过指定三个冒号分隔的值 \xe2\x80\x9cstart:rate:full\xe2\x80\x9d (例如“10:30:60”)来启用随机提前删除。如果当前有 \xe2\x80\x9cstart\xe2\x80\x9d (10) 未经身份验证,sshd(8) 将拒绝连接尝试,概率为 \xe2\x80\x9crate/100\xe2\x80\x9d (30%)连接。如果未经身份验证的连接数量达到 \xe2\x80\x9cfull\xe2\x80\x9d (60),概率会线性增加,并且所有连接尝试都会被拒绝。
\n
将值提高到大于您期望的连接数量应该可以解决您的问题。否则,您可以在系统日志中设置LogLevel DEBUG3查看sshd_config更多日志。
但是当您连接到同一台服务器时,最好使用连接复用。它会更快,并且您不会遇到这些问题。查看ControlMaster选项ssh_config或仅查看我的类似答案,以快速游览这个“魔法”。