共有接続では scp を実行できません

共有接続では scp を実行できません

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 .

このスクリプトの出力は次のようになります:

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

私の SSH 共有接続は、公開キーと SSH エージェントを使用して認証されます。

共有接続を介して SCP を実行できるようにするには、何をする必要がありますか?

答え1

sshさまざまな目的でオプションscpを使用します。-S

ssh:

-Sctl_path
接続共有のための制御ソケットの場所を指定します。接続共有を無効にするには文字列「none」を指定します。詳細については、ssh_config(5) の ControlPath および ControlMaster の説明を参照してください。

scp:

-Sprogram
暗号化された接続に使用するプログラムの名前。プログラムはssh(1)オプションを理解する必要があります。

scp制御ソケットをプログラムとして実行しようとしているため、「アクセスが拒否されました」というエラーが表示されます。

scpの場合はオプションを使用する必要があります-o ControlPath=/path/to/socket:

scp -vvv -o "ControlPath=$SSH_CONTROL_SOCKET" root@"$ONE_HOST":/etc/hosts .

関連情報