the home site for me: also iteration 3 or 4 of my site
1%YAML 1.2
2---
3# Standalone version of known-hosts.sublime-syntax
4# Merged with: ssh-common.sublime-syntax, ssh-crypto.sublime-syntax
5
6name: Known Hosts
7scope: text.known_hosts
8version: 2
9file_extensions:
10- known_hosts
11hidden_file_extensions:
12- known_hosts.old
13variables:
14 base64_char: '[a-zA-Z0-9+/]'
15 ssh_fingerprint: (?:AAAA(?:E2V|[BC]3N){{base64_char}}+={0,3})
16 zero_to_32: (?:3[0-2]|[12][0-9]|[0-9])
17 zero_to_128: (?:12[0-8]|1[01][0-9]|[1-9][0-9]|[0-9])
18 zero_to_255: (?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9][0-9])|(?:[1-9][0-9])|[0-9])
19 zero_to_65535: (?:6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9])
20 ipv4: (?:(?:{{zero_to_255}}\.){3}{{zero_to_255}})
21 ipv6: "(?xi:\n (?:::(?:ffff(?::0{1,4}){0,1}:){0,1}{{ipv4}}) # ::255.255.255.255\
22 \ ::ffff:255.255.255.255 ::ffff:0:255.255.255.255 (IPv4-mapped IPv6 addresses\
23 \ and IPv4-translated addresses)\n |(?:(?:[0-9a-f]{1,4}:){1,4}:{{ipv4}}) \
24 \ # 2001:db8:3:4::192.0.2.33 64:ff9b::192.0.2.33 \
25 \ (IPv4-Embedded IPv6 Address)\n |(?:fe80:(?::[0-9a-f]{1,4}){0,4}%[0-9a-z]{1,})\
26 \ # fe80::7:8%eth0 fe80::7:8%1 \
27 \ (link-local IPv6 addresses with zone index)\n |(?:(?:[0-9a-f]{1,4}:){7,7}\
28 \ [0-9a-f]{1,4}) # 1:2:3:4:5:6:7:8\n | (?:[0-9a-f]{1,4}: (?::[0-9a-f]{1,4}){1,6})\
29 \ # 1::3:4:5:6:7:8 1::3:4:5:6:7:8 1::8\n |(?:(?:[0-9a-f]{1,4}:){1,2}(?::[0-9a-f]{1,4}){1,5})\
30 \ # 1::4:5:6:7:8 1:2::4:5:6:7:8 1:2::8\n |(?:(?:[0-9a-f]{1,4}:){1,3}(?::[0-9a-f]{1,4}){1,4})\
31 \ # 1::5:6:7:8 1:2:3::5:6:7:8 1:2:3::8\n |(?:(?:[0-9a-f]{1,4}:){1,4}(?::[0-9a-f]{1,4}){1,3})\
32 \ # 1::6:7:8 1:2:3:4::6:7:8 1:2:3:4::8\n |(?:(?:[0-9a-f]{1,4}:){1,5}(?::[0-9a-f]{1,4}){1,2})\
33 \ # 1::7:8 1:2:3:4:5::7:8 1:2:3:4:5::8\n |(?:(?:[0-9a-f]{1,4}:){1,6}\
34 \ :[0-9a-f]{1,4}) # 1::8 1:2:3:4:5:6::8 1:2:3:4:5:6::8\n\
35 \ |(?:(?:[0-9a-f]{1,4}:){1,7} :) # 1:: \
36 \ 1:2:3:4:5:6:7::\n |(?::(?:(?::[0-9a-f]{1,4}){1,7}|:)) \
37 \ # ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::\n)"
38contexts:
39 main:
40 - include: comments-number-sign
41 - match: ^((@)(?:revoked|cert-authority))?
42 captures:
43 1: meta.annotation.known_hosts variable.annotation.known_hosts
44 2: punctuation.definition.annotation.known_hosts
45 push:
46 - meta_scope: meta.line.known-host.known_hosts
47 - include: pop-before-nl
48 - include: pop-nl
49 - include: punctuation-comma-sequence
50 - include: ssh-fingerprint-with-label
51 - include: ssh-key-types
52 - include: hostname-or-ip-value
53 comments:
54 - include: comments-number-sign
55 - include: comments-semicolon
56 comments-number-sign:
57 - match: ^\s*(#+)
58 captures:
59 1: comment.line.number-sign.ssh.common punctuation.definition.comment.ssh.common
60 push:
61 - meta_content_scope: comment.line.number-sign.ssh.common
62 - match: \n
63 scope: comment.line.number-sign.ssh.common
64 pop: true
65 comments-semicolon:
66 - match: ^\s*(;+)
67 captures:
68 1: comment.line.semi-colon.ssh.common punctuation.definition.comment.ssh.common
69 push:
70 - meta_content_scope: comment.line.semi-colon.ssh.common
71 - include: pop-nl
72 operator-exclamation:
73 - match: '!'
74 scope: keyword.operator.logical.ssh.common
75 wildcards:
76 - match: \*
77 scope: constant.other.wildcard.asterisk.ssh.common
78 - match: \?
79 scope: constant.other.wildcard.questionmark.ssh.common
80 punctuation-comma-sequence:
81 - match: ','
82 scope: punctuation.separator.sequence.ssh.common
83 punctuation-dot-sequence:
84 - match: \.
85 scope: punctuation.separator.sequence.ssh.common
86 punctuation-at:
87 - match: '@'
88 scope: punctuation.separator.sequence.ssh.common
89 ssh-fingerprint:
90 - match: '{{ssh_fingerprint}}'
91 scope: variable.other.fingerprint.ssh.common
92 ssh-fingerprint-with-label:
93 - match: '{{ssh_fingerprint}}'
94 scope: variable.other.fingerprint.ssh.common
95 push: expect-fingerprint-label
96 expect-fingerprint-label:
97 - include: pop-before-nl
98 - match: (?=\S)
99 push:
100 - meta_scope: meta.annotation.identifier.ssh.common string.unquoted.ssh.common
101 - match: (?=[ \t]*$)
102 pop: 1
103 - include: punctuation-at
104 time-values:
105 - match: \b(?=[\dsmhdw]*\d[smhdw][\s,"])
106 push:
107 - meta_scope: meta.constant.time.ssh.common meta.number.integer.decimal.ssh.common
108 - match: (?=[\s,"])
109 pop: 1
110 - match: (\d+)([smhdw])
111 captures:
112 1: constant.numeric.value.ssh.common
113 2: constant.numeric.suffix.ssh.common
114 bytes-values:
115 - match: \b(\d+)([KMG])(?=[\s,"])
116 scope: meta.constant.bytes.ssh.common meta.number.integer.other.ssh.common
117 captures:
118 1: constant.numeric.value.ssh.common
119 2: constant.numeric.suffix.ssh.common
120 mac-addresses:
121 - match: (?:[0-9a-fA-F]{2}:){5}(?:[0-9a-fA-F]{2})
122 scope: entity.name.constant.mac-address.ssh.common
123 ipv4:
124 - match: \b{{ipv4}}\b
125 scope: meta.number.integer.other.ssh.common constant.numeric.ip-address.v4.ssh.common
126 ipv6:
127 - match: '{{ipv6}}'
128 scope: meta.number.integer.other.ssh.common constant.numeric.ip-address.v6.ssh.common
129 ipv6-square-bracket:
130 - match: (\[){{ipv6}}(\])
131 scope: meta.number.integer.other.ssh.common constant.numeric.ip-address.v6.ssh.common
132 captures:
133 1: punctuation.definition.constant.begin.ssh.common
134 2: punctuation.definition.constant.end.ssh.common
135 ip-addresses:
136 - include: ipv6
137 - include: ipv4
138 ipv4-with-cidr:
139 - match: \b({{ipv4}})(?:(/)({{zero_to_32}}))?\b
140 captures:
141 1: meta.number.integer.other.ssh.common constant.numeric.ip-address.v4.ssh.common
142 2: punctuation.separator.sequence.ssh.common
143 3: constant.other.range.ssh.common
144 ipv6-with-cidr:
145 - match: ({{ipv6}})(?:(/)({{zero_to_128}})\b)?
146 captures:
147 1: meta.number.integer.other.ssh.common constant.numeric.ip-address.v6.ssh.common
148 2: punctuation.separator.sequence.ssh.common
149 3: constant.other.range.ssh.common
150 ip-addresses-with-cidr:
151 - include: ipv6-with-cidr
152 - include: ipv4-with-cidr
153 port-numbers:
154 - match: \b{{zero_to_65535}}(?![\w:])
155 scope: meta.number.integer.decimal.ssh.common constant.numeric.port-number.ssh.common
156 match-all:
157 - match: '\b(?xi: all )\b'
158 scope: constant.language.boolean.true.ssh.common
159 none:
160 - match: \bnone\b
161 scope: constant.language.null.ssh.common
162 any:
163 - match: \bany\b
164 scope: constant.language.set.ssh.common
165 boolean:
166 - match: \byes\b
167 scope: constant.language.boolean.true.ssh.common
168 - match: \bno\b
169 scope: constant.language.boolean.false.ssh.common
170 boolean-with-typing:
171 - include: boolean
172 - match: \b(?:ye?|n)\b
173 log-level:
174 - match: '\b(?x: QUIET | FATAL | ERROR | INFO | DEBUG[1-3]? )\b'
175 scope: constant.language.log-level.ssh.common
176 possibly-quoted-value:
177 - meta_content_scope: meta.mapping.value.ssh.common
178 - match: '"'
179 scope: punctuation.definition.string.begin.ssh.common
180 push:
181 - meta_scope: string.quoted.double.ssh.common
182 - match: (")(?:\s*(\S.*))?
183 captures:
184 1: punctuation.definition.string.end.ssh.common
185 2: invalid.illegal.ssh.common
186 pop: 1
187 - match: \n|$
188 scope: invalid.illegal.unclosed-string.ssh.common
189 pop: 2
190 - match: (?=\S)
191 push:
192 - meta_content_scope: string.unquoted.ssh.common
193 - include: pop-before-nl
194 - include: pop-nl
195 string-patterns:
196 - include: punctuation-comma-sequence
197 - include: operator-exclamation
198 - match: '"'
199 scope: punctuation.definition.string.begin.ssh.common
200 push:
201 - meta_content_scope: string.quoted.double.ssh.common
202 - match: '"'
203 scope: punctuation.definition.string.end.ssh.common
204 pop: 1
205 - include: wildcards
206 - match: (?=\S)
207 push:
208 - meta_content_scope: string.unquoted.ssh.common
209 - match: (?=[,!\s])
210 pop: 1
211 - include: wildcards
212 paths:
213 - match: (?=~?[\w.\-?*${}%]*/[\w.\-?*${}%]?)
214 push:
215 - meta_scope: meta.path.ssh.common entity.name.ssh.common
216 - match: (?=[\s,"])
217 pop: 1
218 - match: ~[\w\-.]*
219 scope: variable.language.home.ssh.common
220 - match: (/)(?:(\.{1,2})(?=/)|\.(?!/))?
221 captures:
222 1: punctuation.separator.path.ssh.common
223 2: constant.other.placeholder.ssh.common
224 - match: \.(?=[\w*?%])
225 scope: punctuation.separator.sequence.ssh.common
226 - include: wildcards
227 - include: tokens
228 - include: environment-variables
229 none-command-values:
230 - match: \s*(none)\b[ \t]*$
231 captures:
232 1: constant.language.null.ssh.common
233 - match: \s*((")(none)("))[ \t]*$
234 captures:
235 1: string.quoted.double.ssh.common
236 2: punctuation.definition.string.begin.ssh.common
237 3: constant.language.null.ssh.common
238 4: punctuation.definition.string.end.ssh.common
239 tokens: []
240 environment-variables: []
241 pop-nl:
242 - match: \n
243 pop: 1
244 pop-before-nl:
245 - match: (?=\n)
246 pop: 1
247 ssh-ciphers:
248 - match: \b(?:twofish256\-gcm@libassh\.org|twofish256\-ctr|twofish192\-ctr|twofish128\-gcm@libassh\.org|twofish128\-ctr|twofish\-ctr|crypticore128@ssh\.com|chacha20\-poly1305@openssh\.com|chacha20\-poly1305|camellia256\-ctr@openssh\.org|camellia256\-ctr|camellia192\-ctr@openssh\.org|camellia192\-ctr|camellia128\-ctr@openssh\.org|camellia128\-ctr|aes256\-gcm@openssh\.com|aes256\-gcm|aes256\-ctr|aes192\-gcm@openssh\.com|aes192\-ctr|aes128\-gcm@openssh\.com|aes128\-gcm|aes128\-ctr|AEAD_CAMELLIA_256_GCM|AEAD_CAMELLIA_128_GCM|AEAD_AES_256_GCM|AEAD_AES_128_GCM)(?=[,\s\"])
249 scope: support.function.cipher.ssh.crypto
250 - match: \b(?:twofish256\-cbc|twofish192\-cbc|twofish128\-cbc|twofish\-ofb|twofish\-ecb|twofish\-cfb|twofish\-cbc|serpent256\-gcm@libassh\.org|serpent256\-ctr|serpent256\-cbc|serpent192\-ctr|serpent192\-cbc|serpent128\-gcm@libassh\.org|serpent128\-ctr|serpent128\-cbc|seed\-ctr@ssh\.com|seed\-cbc@ssh\.com|rijndael256\-cbc|rijndael192\-cbc|rijndael128\-cbc|rijndael\-cbc@ssh\.com|rijndael\-cbc@lysator\.liu\.se|none|idea\-ofb|idea\-ecb|idea\-ctr|idea\-cfb|idea\-cbc|grasshopper\-ctr128|des\-ofb|des\-ecb|des\-cfb|des\-cbc@ssh\.com|des\-cbc\-ssh1|des\-cbc|des|cast128\-ofb|cast128\-ecb|cast128\-ctr|cast128\-cfb|cast128\-cbc|cast128\-12\-ofb|cast128\-12\-ecb|cast128\-12\-ctr|cast128\-12\-cfb|cast128\-12\-cbc|camellia256\-cbc@openssh\.org|camellia256\-cbc|camellia192\-cbc@openssh\.org|camellia192\-cbc|camellia128\-cbc@openssh\.org|camellia128\-cbc|blowfish\-ecb|blowfish\-ctr|blowfish\-cfb|blowfish\-cbc|blowfish|arcfour256|arcfour128|arcfour|aes256\-cbc|aes192\-cbc|aes128\-ocb@libassh\.org|aes128\-cbc|3des\-ofb|3des\-ecb|3des\-ctr|3des\-cfb|3des\-cbc|3des)(?=[,\s\"])
251 scope: invalid.deprecated.cipher.ssh.crypto
252 ssh-kex-algorithms:
253 - match: \b(?:x25519\-kyber512\-sha512@aws\.amazon\.com|x25519\-kyber\-512r3\-sha256\-d00@amazon\.com|sntrup761x25519\-sha512@openssh\.com|sntrup4591761x25519\-sha512@tinyssh\.org|sm2kep\-sha2\-nistp256|rsa2048\-sha256|mlkem768x25519\-sha256|mlkem768nistp256\-sha256|mlkem1024nistp384\-sha384|m511\-sha512@libassh\.org|m383\-sha384@libassh\.org|kexguess2@matt\.ucc\.asn\.au|kexAlgoECDH521|kexAlgoECDH384|kexAlgoECDH256|kexAlgoCurve25519SHA256|kex\-strict\-s\-v00@openssh\.com|kex\-strict\-c\-v00@openssh\.com|gss\-nistp521\-sha512\-|gss\-nistp384\-sha384\-|gss\-nistp384\-sha256\-|gss\-nistp256\-sha256\-|gss\-group18\-sha512\-|gss\-group17\-sha512\-|gss\-group16\-sha512\-|gss\-group15\-sha512\-toWM5Slw5Ew8Mqkay\+al2g==|gss\-group15\-sha512\-|gss\-group14\-sha256\-toWM5Slw5Ew8Mqkay\+al2g==|gss\-group14\-sha256\-|gss\-gex\-sha256\-|gss\-curve448\-sha512\-|gss\-curve25519\-sha256\-|gss\-13\.3\.132\.0\.10\-sha256\-|ext\-info\-s|ext\-info\-c|ecmqv\-sha2|ecdh\-sha2\-wiRIU8TKjMZ418sMqlqtvQ==|ecdh\-sha2\-qcFQaMAMGhTziMT0z\+Tuzw==|ecdh\-sha2\-nistt571|ecdh\-sha2\-nistp521|ecdh\-sha2\-nistp384|ecdh\-sha2\-nistp256|ecdh\-sha2\-nistp224|ecdh\-sha2\-nistp192|ecdh\-sha2\-nistk409|ecdh\-sha2\-nistk283|ecdh\-sha2\-nistb409|ecdh\-sha2\-mNVwCXAoS1HGmHpLvBC94w==|ecdh\-sha2\-m/FtSAmrV4j/Wy6RVUaK7A==|ecdh\-sha2\-h/SsxnLCtRBh7I9ATyeB3A==|ecdh\-sha2\-curve25519|ecdh\-sha2\-brainpoolp521r1@genua\.de|ecdh\-sha2\-brainpoolp384r1@genua\.de|ecdh\-sha2\-brainpoolp256r1@genua\.de|ecdh\-sha2\-D3FefCjYoJ/kfXgAyLddYA==|ecdh\-sha2\-9UzNcgwTlEnSCECZa7V1mw==|ecdh\-sha2\-1\.3\.132\.0\.38|ecdh\-sha2\-1\.3\.132\.0\.37|ecdh\-sha2\-1\.3\.132\.0\.36|ecdh\-sha2\-1\.3\.132\.0\.35|ecdh\-sha2\-1\.3\.132\.0\.34|ecdh\-sha2\-1\.3\.132\.0\.16|ecdh\-sha2\-1\.3\.132\.0\.10|ecdh\-sha2\-1\.2\.840\.10045\.3\.1\.7|ecdh\-nistp521\-kyber\-1024r3\-sha512\-d00@openquantumsafe\.org|ecdh\-nistp384\-kyber\-768r3\-sha384\-d00@openquantumsafe\.org|ecdh\-nistp256\-kyber\-512r3\-sha256\-d00@openquantumsafe\.org|diffie\-hellman_group17\-sha512|diffie\-hellman\-group18\-sha512@ssh\.com|diffie\-hellman\-group18\-sha512|diffie\-hellman\-group17\-sha512|diffie\-hellman\-group16\-sha512@ssh\.com|diffie\-hellman\-group16\-sha512|diffie\-hellman\-group16\-sha384@ssh\.com|diffie\-hellman\-group16\-sha256|diffie\-hellman\-group15\-sha512|diffie\-hellman\-group15\-sha384@ssh\.com|diffie\-hellman\-group15\-sha256@ssh\.com|diffie\-hellman\-group15\-sha256|diffie\-hellman\-group14\-sha256@ssh\.com|diffie\-hellman\-group14\-sha256|diffie\-hellman\-group14\-sha224@ssh\.com|diffie\-hellman\-group1\-sha256|diffie\-hellman\-group\-exchange\-sha512@ssh\.com|diffie\-hellman\-group\-exchange\-sha512@ssh\.com|diffie\-hellman\-group\-exchange\-sha384@ssh\.com|diffie\-hellman\-group\-exchange\-sha256@ssh\.com|diffie\-hellman\-group\-exchange\-sha256@ssh\.com|diffie\-hellman\-group\-exchange\-sha256|diffie\-hellman\-group\-exchange\-sha256|diffie\-hellman\-group\-exchange\-sha224@ssh\.com|curve448\-sha512@libssh\.org|curve448\-sha512|curve25519\-sha256@libssh\.org|curve25519\-sha256|Curve25519SHA256)(?=[,\s\"])
254 scope: support.function.kex-algorithm.ssh.crypto
255 - match: \b(?:rsa1024\-sha1|kexAlgoDH1SHA1|kexAlgoDH14SHA1|gss\-group14\-sha1\-toWM5Slw5Ew8Mqkay\+al2g==|gss\-group14\-sha1\-|gss\-group1\-sha1\-toWM5Slw5Ew8Mqkay\+al2g==|gss\-group1\-sha1\-|gss\-gex\-sha1\-toWM5Slw5Ew8Mqkay\+al2g==|gss\-gex\-sha1\-|ecdh\-sha2\-zD/b3hu/71952ArpUG4OjQ==|ecdh\-sha2\-qCbG5Cn/jjsZ7nBeR7EnOA==|ecdh\-sha2\-nistk233|ecdh\-sha2\-nistk163|ecdh\-sha2\-nistb233|ecdh\-sha2\-VqBg4QRPjxx1EXZdV0GdWQ==|ecdh\-sha2\-5pPrSUQtIaTjUSt5VZNBjg==|ecdh\-sha2\-4MHB\+NBt3AlaSRQ7MnB4cg==|ecdh\-sha2\-1\.3\.132\.0\.33|ecdh\-sha2\-1\.3\.132\.0\.27|ecdh\-sha2\-1\.3\.132\.0\.26|ecdh\-sha2\-1\.3\.132\.0\.1|ecdh\-sha2\-1\.2\.840\.10045\.3\.1\.1|diffie\-hellman\-group14\-sha1|diffie\-hellman\-group1\-sha1|diffie\-hellman\-group\-exchange\-sha1)(?=[,\s\"])
256 scope: invalid.deprecated.kex-algorithm.ssh.crypto
257 ssh-key-types:
258 - match: \b(?:x509v3\-sign\-rsa\-sha512@ssh\.com|x509v3\-sign\-rsa\-sha384@ssh\.com|x509v3\-sign\-rsa\-sha256@ssh\.com|x509v3\-sign\-rsa\-sha256@ssh\.com|x509v3\-sign\-rsa\-sha256|x509v3\-sign\-rsa\-sha224@ssh\.com|x509v3\-sign\-dss\-sha512@ssh\.com|x509v3\-sign\-dss\-sha384@ssh\.com|x509v3\-sign\-dss\-sha256@ssh\.com|x509v3\-sign\-dss\-sha224@ssh\.com|x509v3\-rsa2048\-sha256|x509v3\-ecdsa\-sha2\-nistp521|x509v3\-ecdsa\-sha2\-nistp384|x509v3\-ecdsa\-sha2\-nistp256|x509v3\-ecdsa\-sha2\-1\.3\.132\.0\.10|webauthn\-sk\-ecdsa\-sha2\-nistp256@openssh\.com|ssh\-rsa\-sha512@ssh\.com|ssh\-rsa\-sha384@ssh\.com|ssh\-rsa\-sha256@ssh\.com|ssh\-rsa\-sha256@ssh\.com|ssh\-rsa\-sha2\-512|ssh\-rsa\-sha2\-256|ssh\-rsa|ssh\-gost\-2012\-512|ssh\-gost\-2012\-256|ssh\-gost\-2001|ssh\-ed448|ssh\-ed25519\-cert\-v01@openssh\.com|ssh\-ed25519|spi\-sign\-rsa|sk\-ecdsa\-sha2\-nistp256@openssh\.com|sk\-ecdsa\-sha2\-nistp256\-cert\-v01@openssh\.com|rsa\-sha2\-512\-cert\-v01@openssh\.com|rsa\-sha2\-512|rsa\-sha2\-256\-cert\-v01@openssh\.com|rsa\-sha2\-256|eddsa\-e521\-shake256@libassh\.org|eddsa\-e382\-shake256@libassh\.org|ecdsa\-sha2\-nistt571|ecdsa\-sha2\-nistp521\-cert\-v01@openssh\.com|ecdsa\-sha2\-nistp521|ecdsa\-sha2\-nistp384\-cert\-v01@openssh\.com|ecdsa\-sha2\-nistp384|ecdsa\-sha2\-nistp256\-cert\-v01@openssh\.com|ecdsa\-sha2\-nistp256|ecdsa\-sha2\-nistk409|ecdsa\-sha2\-nistk283|ecdsa\-sha2\-nistk233|ecdsa\-sha2\-nistk163|ecdsa\-sha2\-nistb409|ecdsa\-sha2\-curve25519|ecdsa\-sha2\-1\.3\.132\.0\.10\-cert\-v01@openssh\.com|ecdsa\-sha2\-1\.3\.132\.0\.10|dsa3072\-sha256@libassh\.org|dsa2048\-sha256@libassh\.org|dsa2048\-sha224@libassh\.org)(?=[,\s\"])
259 scope: support.type.key-type.ssh.crypto
260 - match: \b(?:x509v3\-ssh\-rsa|x509v3\-ssh\-dss|x509v3\-sign\-rsa\-sha1|x509v3\-sign\-rsa|x509v3\-sign\-dss\-sha1|x509v3\-sign\-dss|ssh\-xmss@openssh\.com|ssh\-xmss\-cert\-v01@openssh\.com|ssh\-rsa1|ssh\-rsa\-cert\-v01@openssh\.com|ssh\-rsa\-cert\-v00@openssh\.com|ssh\-dss\-sha512@ssh\.com|ssh\-dss\-sha384@ssh\.com|ssh\-dss\-sha256@ssh\.com|ssh\-dss\-sha224@ssh\.com|ssh\-dss\-cert\-v01@openssh\.com|ssh\-dss\-cert\-v00@openssh\.com|ssh\-dss|ssh\-dsa|spki\-sign\-rsa|spki\-sign\-dss|pgp\-sign\-rsa|pgp\-sign\-dss|null|ecdsa\-sha2\-nistp224|ecdsa\-sha2\-nistp192|ecdsa\-sha2\-nistb233)(?=[,\s\"])
261 scope: invalid.deprecated.key-type.ssh.crypto
262 ssh-mac-algorithms:
263 - match: \b(?:umac\-96@openssh\.com|umac\-64@openssh\.com|umac\-64\-etm@openssh\.com|umac\-32@openssh\.com|umac\-128@openssh\.com|umac\-128\-etm@openssh\.com|umac\-128|hmac\-sha512@ssh\.com|hmac\-sha512|hmac\-sha3\-512|hmac\-sha3\-384|hmac\-sha3\-256|hmac\-sha3\-224|hmac\-sha256@ssh\.com|hmac\-sha256\-96@ssh\.com|hmac\-sha256|hmac\-sha2\-56|hmac\-sha2\-512\-etm@openssh\.com|hmac\-sha2\-512\-96\-etm@openssh\.com|hmac\-sha2\-512|hmac\-sha2\-384|hmac\-sha2\-256\-etm@openssh\.com|hmac\-sha2\-256\-96\-etm@openssh\.com|hmac\-sha2\-256|hmac\-sha2\-224|crypticore\-mac@ssh\.com|chacha20\-poly1305@openssh\.com|cbcmac\-twofish|cbcmac\-aes|aes256\-gcm|aes128\-gcm|AEAD_AES_256_GCM|AEAD_AES_128_GCM)(?=[,\s\"])
264 scope: support.function.mac-algorithm.ssh.crypto
265 - match: \b(?:sha1\-8|sha1|ripemd160\-8|ripemd160|none|md5\-8|md5|hmac\-sha2\-512\-96|hmac\-sha2\-256\-96|hmac\-sha1\-etm@openssh\.com|hmac\-sha1\-96\-etm@openssh\.com|hmac\-sha1\-96|hmac\-sha1|hmac\-ripemd160@openssh\.com|hmac\-ripemd160\-etm@openssh\.com|hmac\-ripemd160\-96|hmac\-ripemd160|hmac\-ripemd|hmac\-md5\-etm@openssh\.com|hmac\-md5\-96\-etm@openssh\.com|hmac\-md5\-96|hmac\-md5|cbcmac\-rijndael|cbcmac\-des|cbcmac\-blowfish|cbcmac\-3des)(?=[,\s\"])
266 scope: invalid.deprecated.mac-algorithm.ssh.crypto
267 hostname-or-ip-value:
268 - include: operator-exclamation
269 - match: \[
270 scope: punctuation.definition.string.begin.known_hosts
271 push:
272 - meta_scope: meta.brackets.host.known_hosts
273 - match: (\])(?:(:)({{zero_to_65535}}))?
274 captures:
275 1: punctuation.definition.string.end.known_hosts
276 2: punctuation.separator.sequence.known_hosts
277 3: meta.number.integer.decimal.known_hosts constant.numeric.port-number.known_hosts
278 pop: 1
279 - include: operator-exclamation
280 - include: ip-addresses
281 - match: ''
282 push:
283 - meta_scope: meta.string.host.known_hosts string.quoted.other.known_hosts
284 - match: (?=,|\])
285 pop: 1
286 - include: wildcards
287 - include: punctuation-dot-sequence
288 - include: ip-addresses
289 - match: (\|)(\d+)(\|)({{base64_char}}{27}=)(\|)({{base64_char}}{27}=)
290 scope: meta.string.host.obfuscated.known_hosts
291 captures:
292 1: punctuation.definition.known_hosts
293 2: constant.numeric.integer.algorithm.known_hosts
294 3: punctuation.definition.known_hosts
295 4: string.unquoted.salt.known_hosts
296 5: punctuation.definition.known_hosts
297 6: string.unquoted.hash.known_hosts
298 - match: (?=\S)
299 push: hostname
300 hostname:
301 - meta_content_scope: meta.string.host.known_hosts string.unquoted.known_hosts
302 - match: (?=[,\[\s])
303 pop: 1
304 - include: wildcards
305 - include: punctuation-dot-sequence