无法通过共享连接进行 scp

Dav*_*ave 6 linux ssh bash openssh bash-scripting

我在使用 SSH 共享连接时遇到以下问题:

# Set up a shared connection
ssh -f -N -M -S "$SSH_CONTROL_SOCKET" root@"$ONE_HOST"

# I can scp *without* the shared connection
scp root@"$ONE_HOST":/etc/hosts /dev/null

# I can execute a remote command *with* the shared connection
ssh -S "$SSH_CONTROL_SOCKET" root@"$ONE_HOST" "date"

# But I can't scp *with* the shared connection
scp -vvv -S "$SSH_CONTROL_SOCKET" root@"$ONE_HOST":/etc/hosts .
Run Code Online (Sandbox Code Playgroud)

该脚本给出以下输出:

hosts                                                              100%   59    67.8KB/s   00:00
Wed Feb 28 08:23:10 MST 2018
Executing: program /home/myUser/ssh_sharing_socket host myHost.example.com, user root, command scp -v -f /etc/hosts
/home/myUser/ssh_sharing_socket: Permission denied
Run Code Online (Sandbox Code Playgroud)

我的 SSH 共享连接是使用公钥和 SSH 代理进行身份验证的。

我必须做什么才能通过共享连接进行 scp?

Ken*_*ter 7

ssh并将scp-S选项用于不同的目的。

\n\n

ssh:

\n\n
\n

-S ctl_path
\n 指定用于连接共享的控制套接字的位置,或指定字符串 \xe2\x80\x9cnone\xe2\x80\x9d 以禁用连接共享。具体参见ssh_config(5)中ControlPath和ControlMaster的说明。

\n
\n\n

scp:

\n\n
\n

-S program
\n 用于加密连接的程序名称。该程序必须理解 ssh(1) 选项。

\n
\n\n

您收到错误“权限被拒绝”,因为scp正在尝试将控制套接字作为程序运行。

\n\n

对于 scp,您应该使用以下选项-o ControlPath=/path/to/socket

\n\n
scp -vvv -o "ControlPath=$SSH_CONTROL_SOCKET" root@"$ONE_HOST":/etc/hosts .\n
Run Code Online (Sandbox Code Playgroud)\n