]> andersk Git - openssh.git/blame - PROTOCOL
- djm@cvs.openbsd.org 2008/06/10 22:15:23
[openssh.git] / PROTOCOL
CommitLineData
8be03682 1This documents OpenSSH's deviations and extensions to the published SSH
2protocol.
3
4Note that OpenSSH's sftp and sftp-server implement revision 3 of the SSH
5filexfer protocol described in:
6
7http://www.openssh.com/txt/draft-ietf-secsh-filexfer-02.txt
8
9Features from newer versions of the draft are not supported, unless
10explicitly implemented as extensions described below.
11
121. transport: Protocol 2 MAC algorithm "umac-64@openssh.com"
13
14This is a new transport-layer MAC method using the UMAC algorithm
15(rfc4418). This method is identical to the "umac-64" method documented
16in:
17
18http://www.openssh.com/txt/draft-miller-secsh-umac-01.txt
19
202. transport: Protocol 2 compression algorithm "zlib@openssh.com"
21
22This transport-layer compression method uses the zlib compression
23algorithm (identical to the "zlib" method in rfc4253), but delays the
24start of compression until after authentication has completed. This
25avoids exposing compression code to attacks from unauthenticated users.
26
27The method is documented in:
28
29http://www.openssh.com/txt/draft-miller-secsh-compression-delayed-00.txt
30
313. connection: Channel write close extension "eow@openssh.com"
32
33The SSH connection protocol (rfc4254) provides the SSH_MSG_CHANNEL_EOF
34message to allow an endpoint to signal its peer that it will send no
35more data over a channel. Unfortunately, there is no symmetric way for
36an endpoint to request that its peer should cease sending data to it
37while still keeping the channel open for the endpoint to send data to
38the peer.
39
40This is desirable, since it saves the transmission of data that would
41otherwise need to be discarded and it allows an endpoint to signal local
42processes of the condition, e.g. by closing the corresponding file
43descriptor.
44
45OpenSSH implements a channel extension message to perform this
46signalling: "eow@openssh.com" (End Of Write). This message is sent by an
47endpoint when the local output of a channel is closed or experiences a
48write error. The message is formatted as follows:
49
50 byte SSH_MSG_CHANNEL_REQUEST
51 uint32 recipient channel
52 string "eow@openssh.com"
53 boolean FALSE
54
55On receiving this message, the peer SHOULD cease sending data of
56the channel and MAY signal the process from which the channel data
57originates (e.g. by closing its read file descriptor).
58
59As with the symmetric SSH_MSG_CHANNEL_EOF message, the channel does
60remain open after a "eow@openssh.com" has been sent and more data may
61still be sent in the other direction. This message does not consume
62window space and may be sent even if no window space is available.
63
3f0444ca 644. connection: disallow additional sessions extension
65 "no-more-sessions@openssh.com"
66
67Most SSH connections will only ever request a single session, but a
68attacker may abuse a running ssh client to surreptitiously open
69additional sessions under their control. OpenSSH provides a global
70request "no-more-sessions@openssh.com" to mitigate this attack.
71
72When an OpenSSH client expects that it will never open another session
73(i.e. it has been started with connection multiplexing disabled), it
74will send the following global request:
75
76 byte SSH_MSG_GLOBAL_REQUEST
77 string "no-more-sessions@openssh.com"
78 char want-reply
79
80On receipt of such a message, an OpenSSH server will refuse to open
81future channels of type "session" and instead immediately abort the
82connection.
83
84Note that this is not a general defence against compromised clients
85(that is impossible), but it thwarts a simple attack.
86
875. sftp: Reversal of arguments to SSH_FXP_SYMLINK
8be03682 88
89When OpenSSH's sftp-server was implemented, the order of the arguments
90to the SSH_FXP_SYMLINK method was inadvertendly reversed. Unfortunately,
91the reversal was not noticed until the server was widely deployed. Since
92fixing this to follow the specification would cause incompatibility, the
93current order was retained. For correct operation, clients should send
94SSH_FXP_SYMLINK as follows:
95
96 uint32 id
97 string targetpath
98 string linkpath
99
3f0444ca 1006. sftp: Server extension announcement in SSH_FXP_VERSION
8be03682 101
102OpenSSH's sftp-server lists the extensions it supports using the
103standard extension announcement mechanism in the SSH_FXP_VERSION server
104hello packet:
105
106 uint32 3 /* protocol version */
107 string ext1-name
108 string ext1-version
109 string ext2-name
110 string ext2-version
111 ...
112 string extN-name
113 string extN-version
114
115Each extension reports its integer version number as an ASCII encoded
116string, e.g. "1". The version will be incremented if the extension is
117ever changed in an incompatible way. The server MAY advertise the same
118extension with multiple versions (though this is unlikely). Clients MUST
119check the version number before attemping to use the extension.
120
3f0444ca 1217. sftp: Extension request "posix-rename@openssh.com"
8be03682 122
123This operation provides a rename operation with POSIX semantics, which
124are different to those provided by the standard SSH_FXP_RENAME in
125draft-ietf-secsh-filexfer-02.txt. This request is implemented as a
126SSH_FXP_EXTENDED request with the following format:
127
128 uint32 id
129 string "posix-rename@openssh.com"
130 string oldpath
131 string newpath
132
133On receiving this request the server will perform the POSIX operation
134rename(oldpath, newpath) and will respond with a SSH_FXP_STATUS message.
135This extension is advertised in the SSH_FXP_VERSION hello with version
136"1".
137
3f0444ca 1388. sftp: Extension requests "statvfs@openssh.com" and
8be03682 139 "fstatvfs@openssh.com"
140
141These requests correspond to the statvfs and fstatvfs POSIX system
142interfaces. The "statvfs@openssh.com" request operates on an explicit
143pathname, and is formatted as follows:
144
145 uint32 id
146 string "statvfs@openssh.com"
147 string path
148
149The "fstatvfs@openssh.com" operates on an open filehandle:
150
151 uint32 id
152 string "fstatvfs@openssh.com"
153 string handle
154
155These requests return a SSH_FXP_STATUS reply on failure. On success they
156return the following SSH_FXP_EXTENDED_REPLY reply:
157
158 uint32 id
f044f89e 159 uint64 f_bsize /* file system block size */
160 uint64 f_frsize /* fundamental fs block size */
8be03682 161 uint64 f_blocks /* number of blocks (unit f_frsize) */
162 uint64 f_bfree /* free blocks in file system */
163 uint64 f_bavail /* free blocks for non-root */
164 uint64 f_files /* total file inodes */
165 uint64 f_ffree /* free file inodes */
166 uint64 f_favail /* free file inodes for to non-root */
0ad258dc 167 uint64 f_fsid /* file system id */
f044f89e 168 uint64 f_flag /* bit mask of f_flag values */
169 uint64 f_namemax /* maximum filename length */
8be03682 170
171The values of the f_flag bitmask are as follows:
172
173 #define SSH_FXE_STATVFS_ST_RDONLY 0x1 /* read-only */
174 #define SSH_FXE_STATVFS_ST_NOSUID 0x2 /* no setuid */
175
0ad258dc 176This extension is advertised in the SSH_FXP_VERSION hello with version
177"2".
178
3f0444ca 179$OpenBSD: PROTOCOL,v 1.6 2008/06/10 22:15:23 djm Exp $
8be03682 180
This page took 0.094821 seconds and 5 git commands to generate.