SCP über eine gemeinsam genutzte Verbindung ist nicht möglich

SCP über eine gemeinsam genutzte Verbindung ist nicht möglich

Ich habe folgendes Problem mit einer gemeinsamen SSH-Verbindung:

# 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 .

Dieses Skript gibt folgende Ausgabe aus:

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

Meine gemeinsame SSH-Verbindung wird mithilfe eines öffentlichen Schlüssels und eines SSH-Agenten authentifiziert.

Was muss ich tun, um über eine gemeinsam genutzte Verbindung scp verwenden zu können?

Antwort1

sshund scpnutzen Sie die -SOption für verschiedene Zwecke.

ssh:

-Sctl_path
Gibt den Speicherort eines Control-Sockets für die gemeinsame Nutzung von Verbindungen an oder die Zeichenfolge „none“, um die gemeinsame Nutzung von Verbindungen zu deaktivieren. Weitere Informationen finden Sie in der Beschreibung von ControlPath und ControlMaster in ssh_config(5).

scp:

-SProgramm
Name des Programms, das für die verschlüsselte Verbindung verwendet werden soll. Das Programm muss ssh(1)-Optionen verstehen.

Sie erhalten die Fehlermeldung „Zugriff verweigert“, weil scpversucht wird, den Steuersocket als Programm auszuführen.

Für scp sollten Sie die Option verwenden-o ControlPath=/path/to/socket:

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

verwandte Informationen