SSH-Escapezeichen und Übertragung von Binärdateien
Ein Vorteil, der nicht in den anderen Antworten erwähnt worden ist , dass beim Betrieb ohne einen Pseudo-Terminal , die SSH - Escape - Zeichen , wie beispielsweise ~Cwerden nicht unterstützt ; Dies macht es für Programme sicher, Binärdateien zu übertragen, die diese Sequenzen enthalten können.
Konzeptioneller Beweiß
Kopieren Sie eine Binärdatei mit einem Pseudoterminal:
$ ssh -t anthony@remote_host 'cat /usr/bin/free' > ~/free
Connection to remote_host closed.
Kopieren Sie eine Binärdatei ohne Verwendung eines Pseudoterminals:
$ ssh anthony@remote_host 'cat /usr/bin/free' > ~/free2
Die beiden Dateien sind nicht gleich:
$ diff ~/free*
Binary files /home/anthony/free and /home/anthony/free2 differ
Der mit einem Pseudoterminal kopierte ist beschädigt:
$ chmod +x ~/free*
$ ./free
Segmentation fault
während der andere nicht ist:
$ ./free2
total used free shared buffers cached
Mem: 2065496 1980876 84620 0 48264 1502444
-/+ buffers/cache: 430168 1635328
Swap: 4128760 112 4128648
Übertragen von Dateien über SSH
Dies ist besonders wichtig für Programme wie scpoder rsyncden SSH verwendet für die Datenübertragung. In dieser detaillierten Beschreibung der Funktionsweise des SCP-Protokolls wird erläutert, wie das SCP-Protokoll aus einer Mischung aus Textprotokollnachrichten und Binärdateidaten besteht.
OpenSSH schützt Sie vor sich selbst
Es ist erwähnenswert, dass -tder OpenSSH- sshClient die Zuweisung eines Pseudoterminals ablehnt, selbst wenn das Flag verwendet wird, wenn er feststellt, dass sein stdinStream kein Terminal ist:
$ echo testing | ssh -t anthony@remote_host 'echo $TERM'
Pseudo-terminal will not be allocated because stdin is not a terminal.
dumb
Sie können den OpenSSH-Client weiterhin zwingen, ein Pseudoterminal zuzuweisen mit -tt:
$ echo testing | ssh -tt anthony@remote_host 'echo $TERM'
xterm
In beiden Fällen ist es (vernünftigerweise) egal, ob stdoutoder stderrumgeleitet werden:
$ ssh -t anthony@remote_host 'echo $TERM' >| ssh_output
Connection to remote_host closed.