scp 命令不工作:连接被远程主机关闭 (Mac OS X)
Not working scp command: Connection closed by remote host (Mac OS X)
我正在通过 Mac 终端在远程服务器上工作,因为我将它从 10.5 更新到 OSX 10.10 我每次尝试 scp
从服务器到我的电脑:
ssh_exchange_identification: Connection closed by remote host
lost connection
如果我向后执行 scp
(从 mac 复制到服务器),它工作正常,如果我从另一个 mac.[=17= 执行它,它工作正常]
如果我做一个冗长的 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 文件,但我并没有解决太多问题。
检查目标用户的 .bashrc
或等效文件。 ~/.bashrc
用于非交互式登录。如果有 echo
或输出任何内容的命令,它将破坏 SCP 协议。
服务器和桌面上的用户必须在使用 ssh(或 scp)之前在本地创建密钥。您可以使用此命令创建强密钥(算法 RSA 和长度 4096):
ssh-keygen -t rsa -b 4096 -C "username"
如果您的服务器上已有密钥,请检查 ~/.ssh 目录
的权限
如前所述here,此目录中的 .ssh 目录和文件的所有者必须是您的用户。 .ssh 目录的权限必须是 700 (drwx-----),私钥文件 600 (-rw ------) 和 public 密钥必须是 644 (-rw-r--r--)。您可以使用 :
进行检查
ls -alh
如果不是这种情况,您可以更改它:
chown -R username ~/.ssh
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_*
chmod 644 ~/.ssh/*.pub
我刚从我的个人 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",好像没问题。
然后我检查了我的 "hosts.allow" & "hosts.deny",没问题。
最后我发现我在命令中使用了 '~' 路径,就是这样:
scp ~/Downloads/afile root@host2:~/Downloads
我改成了下面这个:
scp /home/Downloads/afile root@host2:/home/Downloads
现在可以使用了。希望这对您有所帮助。
'sudo sshd -t' 清楚地显示了哪个配置行无效。一旦评论该配置行就解决了 SCP 问题。非常感谢您的回答。
系统偏好面板→共享小程序→选中远程登录复选框。这将启用 SSH,进而启用 SCP。
我在使用 scp -P [wrong_custom_port] user@host:/source /destination
时遇到了同样的错误
在谷歌搜索了一段时间但没有找到任何直接答案后,我终于意识到我在远程主机上的 ssh 连接使用了不同的自定义端口号。
希望这对遇到类似问题的人有所帮助。
我会全力以赴。
我今天遇到了这个问题,试图从我局域网中的一台计算机将文件 scp 到我的 macbook,并收到了发送到 STDOUT 的可爱消息
scp: Connection closed
这并没有真正给我带来太多帮助,添加 -VVVV
也没有显示出任何明显的问题,尽管在这样的事情不起作用时使用 -VVVV
并不是我想要的我每天都看(可能漏掉了什么)
综上所述,sudo sshd -t
的上述命令将 nothing 打印到 STDOUT。
所以从这里去哪里,幸运的是我过去遇到过 ssh 问题,恕我直言,这是获得关于为什么某个 ssh 相关的 sane 消息的最简单方法任务即。 scping 一个文件到某种 ssh 服务器是 停止 当前 运行 服务器并在 debug 中启动它 从前台进程中的终端模式(如果 ssh 配置文件设置正确(不是我研究过的东西),可能会启动另一个 ssh 服务器以防止停止现有服务器),但对于我使用,停止现有服务器并在 debug 中启动它的新实例会产生奇迹 ♀️,因此 运行
sshd -d
然后尝试将文件发送到服务器,我在 STDOUT
中看到以下行
debug1: server_input_channel_req: channel 0 request subsystem reply 1
debug1: session_by_channel: session 0 channel 0
debug1: session_input_channel_req: session 0 req subsystem
debug1: subsystem: cannot stat /usr/local/Cellar/openssh/8.8p1/libexec/sftp-server: No such file or directory
debug1: subsystem: exec() /usr/local/Cellar/openssh/8.8p1/libexec/sftp-server
Starting session: subsystem 'sftp' for capin from 10.0.1.42 port 63866 id 0
debug1: Received SIGCHLD.
debug1: session_by_pid: pid 2107
debug1: session_exit_message: session 0 channel 0 pid 2107
debug1: session_exit_message: release channel 0
Received disconnect from 10.0.1.42 port 63866:11: disconnected by user
Disconnected from user capin 10.0.1.42 port 63866
debug1: do_cleanup
debug1: do_cleanup
debug1: PAM: cleanup
debug1: PAM: closing session
debug1: PAM: deleting credentials
这让我觉得那些 error/warning 消息是我的问题,并从那里继续进行故障排除。
我正在通过 Mac 终端在远程服务器上工作,因为我将它从 10.5 更新到 OSX 10.10 我每次尝试 scp
从服务器到我的电脑:
ssh_exchange_identification: Connection closed by remote host
lost connection
如果我向后执行 scp
(从 mac 复制到服务器),它工作正常,如果我从另一个 mac.[=17= 执行它,它工作正常]
如果我做一个冗长的 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 文件,但我并没有解决太多问题。
检查目标用户的 .bashrc
或等效文件。 ~/.bashrc
用于非交互式登录。如果有 echo
或输出任何内容的命令,它将破坏 SCP 协议。
服务器和桌面上的用户必须在使用 ssh(或 scp)之前在本地创建密钥。您可以使用此命令创建强密钥(算法 RSA 和长度 4096):
ssh-keygen -t rsa -b 4096 -C "username"
如果您的服务器上已有密钥,请检查 ~/.ssh 目录
的权限如前所述here,此目录中的 .ssh 目录和文件的所有者必须是您的用户。 .ssh 目录的权限必须是 700 (drwx-----),私钥文件 600 (-rw ------) 和 public 密钥必须是 644 (-rw-r--r--)。您可以使用 :
进行检查ls -alh
如果不是这种情况,您可以更改它:
chown -R username ~/.ssh
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_*
chmod 644 ~/.ssh/*.pub
我刚从我的个人 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",好像没问题。
然后我检查了我的 "hosts.allow" & "hosts.deny",没问题。
最后我发现我在命令中使用了 '~' 路径,就是这样:
scp ~/Downloads/afile root@host2:~/Downloads
我改成了下面这个:
scp /home/Downloads/afile root@host2:/home/Downloads
现在可以使用了。希望这对您有所帮助。
'sudo sshd -t' 清楚地显示了哪个配置行无效。一旦评论该配置行就解决了 SCP 问题。非常感谢您的回答。
系统偏好面板→共享小程序→选中远程登录复选框。这将启用 SSH,进而启用 SCP。
我在使用 scp -P [wrong_custom_port] user@host:/source /destination
在谷歌搜索了一段时间但没有找到任何直接答案后,我终于意识到我在远程主机上的 ssh 连接使用了不同的自定义端口号。
希望这对遇到类似问题的人有所帮助。
我会全力以赴。
我今天遇到了这个问题,试图从我局域网中的一台计算机将文件 scp 到我的 macbook,并收到了发送到 STDOUT 的可爱消息
scp: Connection closed
这并没有真正给我带来太多帮助,添加 -VVVV
也没有显示出任何明显的问题,尽管在这样的事情不起作用时使用 -VVVV
并不是我想要的我每天都看(可能漏掉了什么)
综上所述,sudo sshd -t
的上述命令将 nothing 打印到 STDOUT。
所以从这里去哪里,幸运的是我过去遇到过 ssh 问题,恕我直言,这是获得关于为什么某个 ssh 相关的 sane 消息的最简单方法任务即。 scping 一个文件到某种 ssh 服务器是 停止 当前 运行 服务器并在 debug 中启动它 从前台进程中的终端模式(如果 ssh 配置文件设置正确(不是我研究过的东西),可能会启动另一个 ssh 服务器以防止停止现有服务器),但对于我使用,停止现有服务器并在 debug 中启动它的新实例会产生奇迹 ♀️,因此 运行
sshd -d
然后尝试将文件发送到服务器,我在 STDOUT
中看到以下行debug1: server_input_channel_req: channel 0 request subsystem reply 1
debug1: session_by_channel: session 0 channel 0
debug1: session_input_channel_req: session 0 req subsystem
debug1: subsystem: cannot stat /usr/local/Cellar/openssh/8.8p1/libexec/sftp-server: No such file or directory
debug1: subsystem: exec() /usr/local/Cellar/openssh/8.8p1/libexec/sftp-server
Starting session: subsystem 'sftp' for capin from 10.0.1.42 port 63866 id 0
debug1: Received SIGCHLD.
debug1: session_by_pid: pid 2107
debug1: session_exit_message: session 0 channel 0 pid 2107
debug1: session_exit_message: release channel 0
Received disconnect from 10.0.1.42 port 63866:11: disconnected by user
Disconnected from user capin 10.0.1.42 port 63866
debug1: do_cleanup
debug1: do_cleanup
debug1: PAM: cleanup
debug1: PAM: closing session
debug1: PAM: deleting credentials
这让我觉得那些 error/warning 消息是我的问题,并从那里继续进行故障排除。