
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
ssh
und scp
nutzen Sie die -S
Option 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 scp
versucht 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 .