不工作scp命令:远程主机关闭连接(Mac OS X)

时间:2015-05-19 13:09:19

标签: macos unix terminal scp

我正在通过Mac终端处理远程服务器,因为我从10.5更新到OSX 10.10我每次尝试scp从服务器到我的计算机时都开始收到此消息:

ssh_exchange_identification: Connection closed by remote host
lost connection

如果我向后执行scp(从mac复制到服务器)它可以正常工作,如果我从另一个mac执行它,它可以正常工作。

如果我做了一个verobse 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文件,但我没有做任何事情来解决。

7 个答案:

答案 0 :(得分:5)

我从个人Mac到我们用作本地服务器的Mac桌面遇到了同样的问题。正在运行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

我希望它有所帮助。

答案 1 :(得分:2)

我也遇到了这个问题。

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

然后我检查了我的" hosts.allow" &安培; " hosts.deny",以太没问题。

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

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

我将其更改为以下内容:

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

它现在有效。希望这可以提供帮助。

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

答案 4 :(得分:0)

“系统偏好设置”面板→“共享小程序”→选中“远程登录”复选框。这将启用SSH,反过来又启用SCP。

答案 5 :(得分:0)

使用scp -P [wrong_custom_port] user@host:/source /destination时出现相同的错误

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

希望这可以帮助遇到类似问题的人。

答案 6 :(得分:-1)

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

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

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

的权限

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

ls -alh

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

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