the home site for me: also iteration 3 or 4 of my site
at main 29 kB view raw
1%YAML 1.2 2--- 3# Standalone version of ssh-config.sublime-syntax 4# Merged with: ssh-common.sublime-syntax, ssh-crypto.sublime-syntax 5 6name: SSH Config 7scope: source.ssh_config 8version: 2 9file_extensions: 10- ssh_config 11variables: 12 base64_char: '[a-zA-Z0-9+/]' 13 ssh_fingerprint: (?:AAAA(?:E2V|[BC]3N){{base64_char}}+={0,3}) 14 zero_to_32: (?:3[0-2]|[12][0-9]|[0-9]) 15 zero_to_128: (?:12[0-8]|1[01][0-9]|[1-9][0-9]|[0-9]) 16 zero_to_255: (?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9][0-9])|(?:[1-9][0-9])|[0-9]) 17 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]) 18 ipv4: (?:(?:{{zero_to_255}}\.){3}{{zero_to_255}}) 19 ipv6: "(?xi:\n (?:::(?:ffff(?::0{1,4}){0,1}:){0,1}{{ipv4}}) # ::255.255.255.255\ 20 \ ::ffff:255.255.255.255 ::ffff:0:255.255.255.255 (IPv4-mapped IPv6 addresses\ 21 \ and IPv4-translated addresses)\n |(?:(?:[0-9a-f]{1,4}:){1,4}:{{ipv4}}) \ 22 \ # 2001:db8:3:4::192.0.2.33 64:ff9b::192.0.2.33 \ 23 \ (IPv4-Embedded IPv6 Address)\n |(?:fe80:(?::[0-9a-f]{1,4}){0,4}%[0-9a-z]{1,})\ 24 \ # fe80::7:8%eth0 fe80::7:8%1 \ 25 \ (link-local IPv6 addresses with zone index)\n |(?:(?:[0-9a-f]{1,4}:){7,7}\ 26 \ [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})\ 27 \ # 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})\ 28 \ # 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})\ 29 \ # 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})\ 30 \ # 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})\ 31 \ # 1::7:8 1:2:3:4:5::7:8 1:2:3:4:5::8\n |(?:(?:[0-9a-f]{1,4}:){1,6}\ 32 \ :[0-9a-f]{1,4}) # 1::8 1:2:3:4:5:6::8 1:2:3:4:5:6::8\n\ 33 \ |(?:(?:[0-9a-f]{1,4}:){1,7} :) # 1:: \ 34 \ 1:2:3:4:5:6:7::\n |(?::(?:(?::[0-9a-f]{1,4}){1,7}|:)) \ 35 \ # ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::\n)" 36 tokens_standard: (?:%[%CdhikLlnpru]) 37 tokens_knownhosts: (?:{{tokens_standard}}|%[%fHIKt]) 38 tokens_hostname: (?:%[%h]) 39 tokens_proxycommand: (?:%[%hnpr]) 40 tokens_all: (?:{{tokens_knownhosts}}|%T) 41 tokens_localcommand: '{{tokens_all}}' 42 match_parameters: "\\b(?xi:\n all | canonical | final | exec | localnetwork | host\ 43 \ | originalhost\n| tagged | command | user | localuser | version | sessiontype\n\ 44 )\\b" 45contexts: 46 main: 47 - include: comments 48 - include: host-block 49 - include: match 50 - include: naked-parameters 51 comments: 52 - include: comments-number-sign 53 - include: comments-semicolon 54 comments-number-sign: 55 - match: ^\s*(#+) 56 captures: 57 1: comment.line.number-sign.ssh.common punctuation.definition.comment.ssh.common 58 push: 59 - meta_content_scope: comment.line.number-sign.ssh.common 60 - match: \n 61 scope: comment.line.number-sign.ssh.common 62 pop: true 63 comments-semicolon: 64 - match: ^\s*(;+) 65 captures: 66 1: comment.line.semi-colon.ssh.common punctuation.definition.comment.ssh.common 67 push: 68 - meta_content_scope: comment.line.semi-colon.ssh.common 69 - include: pop-nl 70 operator-exclamation: 71 - match: '!' 72 scope: keyword.operator.logical.ssh.common 73 wildcards: 74 - match: \* 75 scope: constant.other.wildcard.asterisk.ssh.common 76 - match: \? 77 scope: constant.other.wildcard.questionmark.ssh.common 78 punctuation-comma-sequence: 79 - match: ',' 80 scope: punctuation.separator.sequence.ssh.common 81 punctuation-dot-sequence: 82 - match: \. 83 scope: punctuation.separator.sequence.ssh.common 84 punctuation-at: 85 - match: '@' 86 scope: punctuation.separator.sequence.ssh.common 87 ssh-fingerprint: 88 - match: '{{ssh_fingerprint}}' 89 scope: variable.other.fingerprint.ssh.common 90 ssh-fingerprint-with-label: 91 - match: '{{ssh_fingerprint}}' 92 scope: variable.other.fingerprint.ssh.common 93 push: expect-fingerprint-label 94 expect-fingerprint-label: 95 - include: pop-before-nl 96 - match: (?=\S) 97 push: 98 - meta_scope: meta.annotation.identifier.ssh.common string.unquoted.ssh.common 99 - match: (?=[ \t]*$) 100 pop: 1 101 - include: punctuation-at 102 time-values: 103 - match: \b(?=[\dsmhdw]*\d[smhdw][\s,"]) 104 push: 105 - meta_scope: meta.constant.time.ssh.common meta.number.integer.decimal.ssh.common 106 - match: (?=[\s,"]) 107 pop: 1 108 - match: (\d+)([smhdw]) 109 captures: 110 1: constant.numeric.value.ssh.common 111 2: constant.numeric.suffix.ssh.common 112 bytes-values: 113 - match: \b(\d+)([KMG])(?=[\s,"]) 114 scope: meta.constant.bytes.ssh.common meta.number.integer.other.ssh.common 115 captures: 116 1: constant.numeric.value.ssh.common 117 2: constant.numeric.suffix.ssh.common 118 mac-addresses: 119 - match: (?:[0-9a-fA-F]{2}:){5}(?:[0-9a-fA-F]{2}) 120 scope: entity.name.constant.mac-address.ssh.common 121 ipv4: 122 - match: \b{{ipv4}}\b 123 scope: meta.number.integer.other.ssh.common constant.numeric.ip-address.v4.ssh.common 124 ipv6: 125 - match: '{{ipv6}}' 126 scope: meta.number.integer.other.ssh.common constant.numeric.ip-address.v6.ssh.common 127 ipv6-square-bracket: 128 - match: (\[){{ipv6}}(\]) 129 scope: meta.number.integer.other.ssh.common constant.numeric.ip-address.v6.ssh.common 130 captures: 131 1: punctuation.definition.constant.begin.ssh.common 132 2: punctuation.definition.constant.end.ssh.common 133 ip-addresses: 134 - include: ipv6 135 - include: ipv4 136 ipv4-with-cidr: 137 - match: \b({{ipv4}})(?:(/)({{zero_to_32}}))?\b 138 captures: 139 1: meta.number.integer.other.ssh.common constant.numeric.ip-address.v4.ssh.common 140 2: punctuation.separator.sequence.ssh.common 141 3: constant.other.range.ssh.common 142 ipv6-with-cidr: 143 - match: ({{ipv6}})(?:(/)({{zero_to_128}})\b)? 144 captures: 145 1: meta.number.integer.other.ssh.common constant.numeric.ip-address.v6.ssh.common 146 2: punctuation.separator.sequence.ssh.common 147 3: constant.other.range.ssh.common 148 ip-addresses-with-cidr: 149 - include: ipv6-with-cidr 150 - include: ipv4-with-cidr 151 port-numbers: 152 - match: \b{{zero_to_65535}}(?![\w:]) 153 scope: meta.number.integer.decimal.ssh.common constant.numeric.port-number.ssh.common 154 match-all: 155 - match: '\b(?xi: all )\b' 156 scope: constant.language.boolean.true.ssh.common 157 none: 158 - match: \bnone\b 159 scope: constant.language.null.ssh.common 160 any: 161 - match: \bany\b 162 scope: constant.language.set.ssh.common 163 boolean: 164 - match: \byes\b 165 scope: constant.language.boolean.true.ssh.common 166 - match: \bno\b 167 scope: constant.language.boolean.false.ssh.common 168 boolean-with-typing: 169 - include: boolean 170 - match: \b(?:ye?|n)\b 171 log-level: 172 - match: '\b(?x: QUIET | FATAL | ERROR | INFO | DEBUG[1-3]? )\b' 173 scope: constant.language.log-level.ssh.common 174 possibly-quoted-value: 175 - meta_content_scope: meta.mapping.value.ssh_config 176 - match: '"' 177 scope: punctuation.definition.string.begin.ssh_config 178 push: 179 - meta_scope: string.quoted.double.ssh_config 180 - match: (")(?:\s*(\S.*))? 181 captures: 182 1: punctuation.definition.string.end.ssh_config 183 2: invalid.illegal.ssh_config 184 pop: 1 185 - match: \n|$ 186 scope: invalid.illegal.unclosed-string.ssh_config 187 pop: 2 188 - match: (?=\S) 189 push: 190 - meta_content_scope: string.unquoted.ssh_config 191 - include: pop-before-nl 192 - include: pop-nl 193 string-patterns: 194 - include: punctuation-comma-sequence 195 - include: operator-exclamation 196 - match: '"' 197 scope: punctuation.definition.string.begin.ssh.common 198 push: 199 - meta_content_scope: string.quoted.double.ssh.common 200 - match: '"' 201 scope: punctuation.definition.string.end.ssh.common 202 pop: 1 203 - include: wildcards 204 - match: (?=\S) 205 push: 206 - meta_content_scope: string.unquoted.ssh.common 207 - match: (?=[,!\s]) 208 pop: 1 209 - include: wildcards 210 paths: 211 - match: (?=~?[\w.\-?*${}%]*/[\w.\-?*${}%]?) 212 push: 213 - meta_scope: meta.path.ssh.common entity.name.ssh.common 214 - match: (?=[\s,"]) 215 pop: 1 216 - match: ~[\w\-.]* 217 scope: variable.language.home.ssh.common 218 - match: (/)(?:(\.{1,2})(?=/)|\.(?!/))? 219 captures: 220 1: punctuation.separator.path.ssh.common 221 2: constant.other.placeholder.ssh.common 222 - match: \.(?=[\w*?%]) 223 scope: punctuation.separator.sequence.ssh.common 224 - include: wildcards 225 - include: tokens 226 - include: environment-variables 227 none-command-values: 228 - match: \s*(none)\b[ \t]*$ 229 captures: 230 1: constant.language.null.ssh.common 231 - match: \s*((")(none)("))[ \t]*$ 232 captures: 233 1: string.quoted.double.ssh.common 234 2: punctuation.definition.string.begin.ssh.common 235 3: constant.language.null.ssh.common 236 4: punctuation.definition.string.end.ssh.common 237 tokens: 238 - match: '%%' 239 scope: constant.character.escape.ssh_config 240 - match: '{{tokens_standard}}' 241 scope: constant.other.placeholder.ssh_config 242 environment-variables: 243 - include: scope:source.shell#parameter-expansions 244 pop-nl: 245 - match: \n 246 pop: 1 247 pop-before-nl: 248 - match: (?=\n) 249 pop: 1 250 ssh-ciphers: 251 - 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\"]) 252 scope: support.function.cipher.ssh.crypto 253 - 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\"]) 254 scope: invalid.deprecated.cipher.ssh.crypto 255 ssh-kex-algorithms: 256 - 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\"]) 257 scope: support.function.kex-algorithm.ssh.crypto 258 - 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\"]) 259 scope: invalid.deprecated.kex-algorithm.ssh.crypto 260 ssh-key-types: 261 - 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\"]) 262 scope: support.type.key-type.ssh.crypto 263 - 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\"]) 264 scope: invalid.deprecated.key-type.ssh.crypto 265 ssh-mac-algorithms: 266 - 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\"]) 267 scope: support.function.mac-algorithm.ssh.crypto 268 - 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\"]) 269 scope: invalid.deprecated.mac-algorithm.ssh.crypto 270 parameters: 271 - include: comments 272 - include: parameter-hostname 273 - include: parameter-localcommand 274 - include: parameter-proxycommand 275 - include: parameter-proxyjump 276 - include: parameter-knownhostscommand 277 - include: parameter-with-boolean-values 278 - include: parameter-with-boolean-values-plus-ask 279 - include: parameter-generic 280 pop-before-match-parameter: 281 - include: pop-before-nl 282 - match: (?=\s*{{match_parameters}}) 283 pop: 1 284 pop-before-next-host: 285 - match: '(?=^\s*(?xi: Host | Match )\b)' 286 pop: 1 287 naked-parameters: 288 - match: (?=\S) 289 push: 290 - meta_scope: meta.block.naked.ssh_config 291 - include: pop-before-next-host 292 - include: parameters 293 host-pattern: 294 - meta_content_scope: entity.name.label.host-alias.ssh_config 295 - include: punctuation-dot-sequence 296 - include: wildcards 297 - match: (?=\s|,) 298 pop: 1 299 host-patterns: 300 - include: operator-exclamation 301 - include: punctuation-comma-sequence 302 - match: (?=\S) 303 push: host-pattern 304 host-block: 305 - match: ^\s*((?i:Host))\b 306 captures: 307 1: keyword.declaration.host-alias.ssh_config 308 set: host-aliases 309 host-aliases: 310 - meta_scope: meta.block.host.ssh_config 311 - match: (?=\n) 312 set: host-body 313 - include: host-patterns 314 host-body: 315 - meta_scope: meta.block.host.ssh_config 316 - include: pop-before-next-host 317 - include: parameters 318 match: 319 - match: ^\s*((?i:Match))\b 320 captures: 321 1: keyword.control.conditional.ssh_config 322 set: match-conditions 323 match-conditions: 324 - meta_scope: meta.block.match.ssh_config 325 - meta_content_scope: meta.statement.conditional.ssh_config 326 - match: \n 327 set: match-body 328 - include: operator-exclamation 329 - include: match-all 330 - match: '\b(?xi: canonical | final )\b' 331 scope: keyword.other.ssh_config 332 - match: '\b((?xi: exec ))\b\s*(\")' 333 captures: 334 1: keyword.other.ssh_config 335 2: string.quoted.double.ssh_config punctuation.definition.string.begin.ssh_config 336 escape: (?<!\\)\"(?=\s*(?:#.*)?) 337 escape_captures: 338 0: meta.block.match.ssh_config meta.statement.conditional.ssh_config string.quoted.double.ssh_config 339 punctuation.definition.string.end.ssh_config 340 embed_scope: string.quoted.double.ssh_config 341 embed: scope:source.shell.embedded.ssh 342 - match: '\b((?xi: exec ))\b[ \t]+' 343 captures: 344 1: keyword.other.ssh_config 345 embed: scope:source.shell.embedded.ssh 346 escape: (?=\s*(?:{{match_parameters}}|$)) 347 - match: '\b(?xi: (?:original)? host )\b' 348 scope: keyword.other.ssh_config 349 push: 350 - include: pop-before-match-parameter 351 - include: punctuation-comma-sequence 352 - include: host-patterns 353 - match: '\b(?xi: (?:local)? user | tagged | version | command | sessiontype )\b' 354 scope: keyword.other.ssh_config 355 push: 356 - include: pop-before-match-parameter 357 - include: string-patterns 358 - match: '\b(?xi: localnetwork )\b' 359 scope: keyword.other.ssh_config 360 push: 361 - include: pop-before-match-parameter 362 - include: punctuation-comma-sequence 363 - include: ip-addresses-with-cidr 364 match-body: 365 - meta_content_scope: meta.block.match.ssh_config 366 - include: pop-before-next-host 367 - include: parameters 368 parameter-hostname: 369 - match: ^\s*((?i:HostName))\b\s*(=)? 370 captures: 371 1: meta.mapping.key.ssh_config keyword.declaration.host.ssh_config 372 2: keyword.operator.assignment.ssh_config 373 push: 374 - meta_content_scope: meta.string.host.ssh_config 375 - include: pop-nl 376 - include: ip-addresses 377 - match: (?=\S+) 378 push: 379 - meta_content_scope: string.unquoted.hostname.ssh_config 380 - include: pop-before-nl 381 - include: punctuation-dot-sequence 382 - match: '{{tokens_hostname}}' 383 scope: constant.character.escape.ssh_config 384 - match: \s+(\S+) 385 captures: 386 1: invalid.illegal.ssh_config 387 parameter-proxyjump: 388 - match: ^\s*((?i:ProxyJump))\b\s*(=)? 389 captures: 390 1: meta.mapping.key.ssh_config keyword.other.ssh_config 391 2: keyword.operator.assignment.ssh_config 392 push: 393 - meta_content_scope: meta.mapping.value.ssh_config 394 - include: pop-nl 395 - include: none-command-values 396 - match: '"' 397 scope: string.quoted.double.ssh_config punctuation.definition.string.begin.ssh_config 398 escape: (")|(?=\n|$) 399 escape_captures: 400 1: meta.mapping.value.ssh_config string.quoted.double.ssh_config punctuation.definition.string.end.ssh_config 401 embed_scope: string.quoted.double.ssh_config 402 embed: proxyjump-values 403 - match: (?=\S) 404 escape: (?=\n|$) 405 embed: proxyjump-values 406 proxyjump-values: 407 - include: ip-addresses 408 - include: punctuation-comma-sequence 409 - match: (?=[\w%]+@) 410 push: 411 - meta_content_scope: meta.string.user.ssh_config string.unquoted.ssh_config 412 - match: '%%' 413 scope: constant.character.escape.ssh_config 414 - match: '{{tokens_proxycommand}}' 415 scope: constant.other.placeholder.ssh_config 416 - match: '@' 417 scope: punctuation.separator.ssh_config 418 pop: 1 419 - match: :(?={{zero_to_65535}}(?![\w:])) 420 scope: punctuation.separator.ssh_config 421 push: 422 - match: (?=\D) 423 pop: 1 424 - include: port-numbers 425 - match: (?=\S+) 426 push: 427 - meta_content_scope: string.unquoted.hostname.ssh_config 428 - match: (?=[\s,:"]) 429 pop: 1 430 - include: punctuation-dot-sequence 431 - match: '%%' 432 scope: constant.character.escape.ssh_config 433 - match: '{{tokens_proxycommand}}' 434 scope: constant.other.placeholder.ssh_config 435 parameter-proxycommand: 436 - match: ^\s*((?i:ProxyCommand))\b\s*(=)? 437 captures: 438 1: meta.mapping.key.ssh_config keyword.other.ssh_config 439 2: keyword.operator.assignment.ssh_config 440 push: 441 - meta_content_scope: meta.mapping.value.ssh_config 442 - include: pop-nl 443 - include: none-command-values 444 - match: '"' 445 scope: string.quoted.double.ssh_config punctuation.definition.string.begin.ssh_config 446 escape: (")|(?=\n|$) 447 escape_captures: 448 1: meta.mapping.value.ssh_config string.quoted.double.ssh_config punctuation.definition.string.end.ssh_config 449 embed_scope: string.quoted.double.ssh_config source.shell.embedded.ssh.proxycommand 450 embed: scope:source.shell.embedded.ssh.proxycommand 451 - match: (?=\S) 452 escape: (?=\n|$) 453 embed: scope:source.shell.embedded.ssh.proxycommand 454 parameter-localcommand: 455 - match: ^\s*((?i:LocalCommand))\b\s*(=)? 456 captures: 457 1: meta.mapping.key.ssh_config keyword.other.ssh_config 458 2: keyword.operator.assignment.ssh_config 459 push: 460 - meta_content_scope: meta.mapping.value.ssh_config 461 - include: pop-nl 462 - include: none-command-values 463 - match: '"' 464 scope: string.quoted.double.ssh_config punctuation.definition.string.begin.ssh_config 465 escape: (")|(?=$) 466 escape_captures: 467 1: meta.mapping.value.ssh_config string.quoted.double.ssh_config punctuation.definition.string.end.ssh_config 468 embed_scope: string.quoted.double.ssh_config source.shell.embedded.ssh.localcommand 469 embed: scope:source.shell.embedded.ssh.localcommand 470 - match: (?=\S) 471 escape: (?=$) 472 embed: scope:source.shell.embedded.ssh.localcommand 473 parameter-knownhostscommand: 474 - match: ^\s*((?i:KnownHostsCommand))\b\s*(=)? 475 captures: 476 1: meta.mapping.key.ssh_config keyword.other.ssh_config 477 2: keyword.operator.assignment.ssh_config 478 push: 479 - meta_content_scope: meta.mapping.value.ssh_config 480 - include: pop-nl 481 - include: none-command-values 482 - match: '"' 483 scope: string.quoted.double.ssh_config punctuation.definition.string.begin.ssh_config 484 escape: (")|(?=$) 485 escape_captures: 486 1: meta.mapping.value.ssh_config string.quoted.double.ssh_config punctuation.definition.string.end.ssh_config 487 embed_scope: string.quoted.double.ssh_config source.shell.embedded.ssh.knownhostscommand 488 embed: scope:source.shell.embedded.ssh.knownhostscommand 489 - match: (?=\S) 490 escape: (?=$) 491 embed: scope:source.shell.embedded.ssh.knownhostscommand 492 parameter-with-boolean-values: 493 - match: "(?xi:\n ^\\s*\n (\n (?: Pubkey | HostBased | Password | ChallengeResponse\n\ 494 \ | KbdInteractive | (?:Rhosts)? RSA\n ) Authentication # Auth\n | ForwardAgent\ 495 \ | ForwardX11(?:Trusted)? | ClearAllForwardings\n | ExitOnForwardFailure #\ 496 \ Fwds\n | BatchMode | CanonicalizeFallbackLocal | CheckHostIP | Compression\n\ 497 \ | EnableEscapeCommandLine | EnableSSHKeySign\n | ForkAfterAuthentication\ 498 \ | GatewayPorts | HashKnownHosts\n | IdentitiesOnly | NoHostAuthenticationForLocalhost\n\ 499 \ | PermitLocalCommand | ProxyUseFdpass | RefuseConnection | StdinNull\n |\ 500 \ StreamLocalBindUnlink | TCPKeepAlive\n | UseKeychain | UsePrivilegedPort\ 501 \ | VisualHostKey\n | GSSAPI (?:\n Authentication | KeyExchange | DelegateCredentials\n\ 502 \ | RenewalForcesRekey | TrustDNS ) # GSSAPI\n )\n \\b[ \\t]*(=)?\n)" 503 captures: 504 1: meta.mapping.key.ssh_config keyword.other.ssh_config 505 2: keyword.operator.assignment.ssh_config 506 with_prototype: 507 - include: boolean-with-typing 508 - match: '[^"\s]+' 509 scope: invalid.illegal.sshd_config 510 push: possibly-quoted-value 511 parameter-with-boolean-values-plus-ask: 512 - match: "(?xi:\n ^\\s*\n ( ControlMaster | StrictHostKeyChecking | UpdateHostKeys\n\ 513 \ | VerifyHostKeyDNS\n )\n \\b[ \\t]*(=)?\n)" 514 captures: 515 1: meta.mapping.key.ssh_config keyword.other.ssh_config 516 2: keyword.operator.assignment.ssh_config 517 with_prototype: 518 - include: boolean-with-typing 519 - include: ask 520 - match: \bas?\b 521 - match: '[^"\s]+' 522 scope: invalid.illegal.sshd_config 523 push: possibly-quoted-value 524 parameter-generic: 525 - match: ^\s*([a-zA-Z1]+)\b[ \t]*(=)? 526 captures: 527 1: meta.mapping.key.ssh_config keyword.other.ssh_config 528 2: keyword.operator.assignment.ssh_config 529 with_prototype: 530 - include: generic-parameter-values 531 push: possibly-quoted-value 532 ask: 533 - match: \bask\b 534 scope: constant.language.ssh_config 535 generic-parameter-values: 536 - include: environment-variables 537 - include: none 538 - include: boolean 539 - include: any 540 - include: ask 541 - include: tokens 542 - include: wildcards 543 - include: operator-exclamation 544 - include: punctuation-comma-sequence 545 - include: ssh-key-types 546 - include: ssh-ciphers 547 - include: ssh-kex-algorithms 548 - include: ssh-mac-algorithms 549 - include: ipv6-square-bracket 550 - include: ip-addresses-with-cidr 551 - include: time-values 552 - include: bytes-values 553 - include: log-level 554 - include: paths 555 - match: \b\d+(?=[\s,"]) 556 scope: meta.number.integer.ssh_config constant.numeric.value.ssh_config