【问题标题】:Not working scp command: Connection closed by remote host (Mac OS X)scp 命令不起作用:连接被远程主机关闭(Mac OS X)
【发布时间】:2015-07-31 08:07:17
【问题描述】:

我正在通过 Mac 终端在远程服务器上工作,因为我将它从 10.5 更新到 OSX 10.10,所以我每次尝试从服务器到我的计算机 scp 时都会收到此消息:

ssh_exchange_identification: Connection closed by remote host
lost connection

如果我向后执行 scp(从 mac 复制到服务器)它工作得很好,如果我在另一个 mac 上执行它也工作得很好。

如果我做一个冗长的scp,它会给我这个:

Executing: program /usr/bin/ssh host xx.xx.xx.x, user User, command scp -v -t /Users/User
OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to xx.xx.xx.x [xx.xx.xx.x] port 22.
debug1: Connection established.
debug1: identity file /home/user/.ssh/identity type -1
debug1: identity file /home/user/.ssh/identity-cert type -1
debug1: identity file /home/user/.ssh/id_rsa type -1
debug1: identity file /home/user/.ssh/id_rsa-cert type -1
debug1: identity file /home/user/.ssh/id_dsa type -1
debug1: identity file /home/user/.ssh/id_dsa-cert type -1
debug1: identity file /home/user/.ssh/id_ecdsa type -1
debug1: identity file /home/user/.ssh/id_ecdsa-cert type -1
ssh_exchange_identification: Connection closed by remote host
lost connection

我尝试查看各种主机、配置、ssh 文件,但解决不了太多问题。

【问题讨论】:

  • 服务器是否仅配置了密钥对身份验证?
  • 我得问管理员,但我真的这么认为
  • 在这种情况下,我认为问题可能是您没有服务器用户的私钥。
  • 但是我可以连接到它并执行任何其他操作,这是升级后唯一停止工作的操作

标签: macos unix terminal scp


【解决方案1】:

我刚刚从我的个人 Mac 到我们用作本地服务器的 Mac 桌面的 SCP 遇到了同样的问题。运行 sudo sshd -t 向我显示了以下提示:

/var/empty must be owned by root and not group or world-writable

我所做的只是将所有者改回 root(我不知道为什么现在还没有,但我记得从 Mavericks 升级到 Yosemite 让我在权限方面有些头疼):

cd /var
sudo chown root empty

希望对你有帮助。

【讨论】:

  • 谢谢哥们!!该命令sudo sshd -t 向我展示了我遇到的确切问题! (在 sshd_config 文件的一行中缺少 #)问题已解决!!!
  • 非常感谢。相同的症状,这解决了我的问题。我试图从 10.13 macOS SSH 到 10.11 OS X。
【解决方案2】:

我也遇到了这个问题。

我试过 "sudo sshd -t" ,但似乎没有问题。

然后我检查了我的“hosts.allow”和“hosts.deny”,以太没有问题。

最后我发现我在命令中使用了 '~' 路径,这里是:

scp ~/Downloads/afile root@host2:~/Downloads

我改成下面这样:

scp /home/Downloads/afile root@host2:/home/Downloads

现在可以使用了。希望这会有所帮助。

【讨论】:

    【解决方案3】:

    检查目标用户的.bashrc 或等效文件。 ~/.bashrc 用于非交互式登录。如果有 echo 或命令输出任何内容,它将破坏 SCP 协议。

    【讨论】:

    • 远程服务器在接受 TCP 连接后立即断开它。 OP 没有成功启动 ssh 会话,更不用说登录了。他的远程主目录的内容无关紧要。
    • 很好的答案,我已经为此苦苦挣扎了很长时间。暂时我不得不重命名我的 .bash_profile 和 .bashrc 脚本,这样它们就不会弄乱 scp 传输,在 scp 传输完成后,我恢复了这些 bash 文件。谢谢!
    【解决方案4】:

    'sudo sshd -t' 清楚地显示了哪个配置行无效。一旦评论了该配置行,就解决了 SCP 问题。非常感谢您的回答。

    【讨论】:

      【解决方案5】:

      系统偏好设置窗格→共享小程序→选中远程登录复选框。这将启用 SSH,进而启用 SCP。

      【讨论】:

        【解决方案6】:

        我在使用scp -P [wrong_custom_port] user@host:/source /destination时遇到了同样的错误

        在谷歌搜索了一段时间并没有找到任何直接答案后,我终于意识到我在远程主机上为我的 ssh 连接使用了不同的自定义端口号。

        希望这对有类似问题的人有所帮助。

        【讨论】:

          【解决方案7】:

          服务器和桌面上的用户必须在使用 ssh(或 scp)之前在本地创建密钥。您可以使用以下命令创建一个强密钥(算法 RSA 和长度 4096):

          ssh-keygen -t rsa -b 4096 -C "username"
          

          如果您的服务器上已有密钥,请检查 ~/.ssh 目录

          的权限

          here 所述,.ssh 目录和此目录中文件的所有者必须是您的用户。 .ssh 目录的权限必须为 700 (drwx------),私钥文件 600 (-rw------) 和公钥必须是 644 (-rw-r--r--)。您可以通过以下方式检查:

          ls -alh
          

          如果不是这样,你可以改变这个:

             chown -R username ~/.ssh
             chmod 700 ~/.ssh
             chmod 600 ~/.ssh/id_*
             chmod 644 ~/.ssh/*.pub
          

          【讨论】:

          • 在执行任何类型的密钥交换之前会话失败。键的质量无关紧要。
          • 您可以交换密钥,因为您没有密钥。行“debug1: identity file /home/user/.ssh/XXXXXXXX type -1”表示您在客户端机器上没有用于身份验证的密钥文件。因为您无法输入密码,所以服务器上似乎禁用了密码识别
          • 但这很奇怪,因为我可以执行任何其他操作(连接、读取、写入、在服务器上复制等)。这是唯一一个我被禁止的
          • 你能在你的 mac 和你的 mac 上执行所有这些操作吗?你的 mac 上有 sshd 吗?
          • 我使用 ssh -X 进行连接,是的,除了从服务器到 mac 的 scp 之外,我可以执行所有这些操作
          猜你喜欢
          • 1970-01-01
          • 2013-01-05
          • 1970-01-01
          • 2013-01-25
          • 1970-01-01
          • 2019-10-27
          • 2014-07-30
          • 2016-05-13
          • 2021-02-04
          相关资源
          最近更新 更多