
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 .