SSH
Вы можете использовать протокол SSH как прокси-сервер, что эквивалентно ssh -D.
Синтаксис профиля:
- Аутентификация по паролю
[Proxy]
proxy = ssh, 1.2.3.4, 22, root, password=pw
- Аутентификация по открытому ключу
[Proxy]
proxy = ssh, 1.2.3.4, 22, root, private-key=base64(privateKeyFileContent)
- Обратите внимание, что вы должны использовать base64 для повторного кодирования всего файла закрытого ключа, даже если сам файл закрытого ключа уже использует кодировку base64. Значение должно быть одной строкой, поэтому запретите
OpenSSLразбивать вывод на строки (-A):
// OpenSSL 1.x
openssl enc -base64 -A -in /path/to/privatefile
// OpenSSL 3+
openssl base64 -A -in /path/to/privatefile
Поддерживаются три типа закрытых ключей: RSA/ECDSA/ED25519. DSA (
ssh-dss) не поддерживается: не работают ни ключ хоста DSA, ни закрытый ключ DSA.Приведённые ниже методы KEX и шифры — это встроенные настройки libssh2 по умолчанию, которые используют Chute Mac, iOS и tvOS; Chute Android вместо них использует набор по умолчанию своей SSH-библиотеки sshj. Это не белый список, который применяет Chute, — Chute их не сужает:
| Метод KEX |
|---|
| diffie-hellman-group1-sha1 |
| diffie-hellman-group14-sha1 |
| ecdh-sha2-nistp256 |
| ecdh-sha2-nistp384 |
| ecdh-sha2-nistp521 |
| curve25519-sha256@libssh.org |
| curve25519-sha256 |
| diffie-hellman-group16-sha512 |
| diffie-hellman-group18-sha512 |
| diffie-hellman-group14-sha256 |
| diffie-hellman-group-exchange-sha256 |
| diffie-hellman-group-exchange-sha1 |
| Шифр |
|---|
| chacha20-poly1305@openssh.com |
| aes256-gcm@openssh.com |
| aes128-gcm@openssh.com |
| aes256-ctr |
| aes192-ctr |
| aes128-ctr |
| aes256-cbc |
| rijndael-cbc@lysator.liu.se |
| aes192-cbc |
| aes128-cbc |
| blowfish-cbc |
| arcfour128 |
| arcfour |
| cast128-cbc |
| 3des-cbc |
- Теперь вы можете указать параметр тайм-аута бездействия. Значение по умолчанию — 180 секунд. Соединения, установленные через политику, делят одну сессию SSH, которая закрывается, когда в течение этого числа секунд через неё не идёт ни одно соединение. Пока открыто хотя бы одно соединение, сессия не закрывается, как бы мало по нему ни передавалось, а завершившееся соединение не влияет на остальные в той же сессии.
[Proxy]
proxy = ssh, 1.2.3.4, 22, root, password=pw, idle-timeout=180
Отпечаток сервера
Для защиты от MitM-атак вы можете указать отпечаток открытого ключа сервера с помощью server-fingerprint, что гарантирует подключение только к легитимным серверам. Запись — это либо открытый ключ сервера в том виде, в каком его записывает ~/.ssh/known_hosts, — тип ключа и ключ в base64, ssh-ed25519 AAAA…, — либо его отпечаток SHA-256 в том виде, в каком его выводит ssh-keygen -l, SHA256:…. Двойные кавычки вокруг значения необязательны. Если server-fingerprint задан, но ни одну из его записей прочитать не удаётся, отклоняется каждое соединение, а не принимается любой сервер. Отклонённое соединение записывается в журнал с типом ключа, который предъявил сервер, и его отпечатком SHA256:.
[Proxy]
proxy = ssh, 1.2.3.4, 22, root, password=pw, idle-timeout=180, server-fingerprint = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5ABCAIO9KYmO+KZQH3VXU5C1aO2xl4G8+7NLkOYDNBxfZUqep"
Поскольку у сервера может быть несколько открытых ключей, параметр server-fingerprint поддерживает настройку нескольких отпечатков.
server-fingerprint = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5ABCAIO9KYmO+KZQH3VXU5C1aO2xl4G8+7NLkOYDNBxfZUqep,ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCrklKEp4vuMqqNiS2lvDL7g3rQ2dAwvik+KIC4iVJNoaHhkLRAEv1y/dQYixf71ORZUI+w3AFKp1RzfiuwciTsMnp7Hq9uvcHqDRDaCrYe1EDx3Dr0XlH1wsdUcr+6DOAUzRSXK9LSEPVK1xHb6WJBaTkNOHruPCmrINA/DEIiflMN2q77AWlsMt+unhmY2YWgJprY+vpDOcXk8+CnL4K+QWNlHB8mTfB58p1oadz1xWG9so//rUMp7JHtUt6QpVJvwf/Qh7IcFNDhSHwSTJu2Px2P9biuUOPkmPtZmTIdnDx25EUWtmE/+VE3lZAYuur7KuGsG0o+X8dYnEMAN3ar"
Вы можете получить отпечаток сервера из файла ~/.ssh/known_hosts. Или в доверенной сети выполните команду ssh-keyscan example.com, чтобы получить его. Пожалуйста, удалите имя хоста в начале строки перед копированием в Chute: запись, которая всё ещё начинается с имени хоста, прочитать не удаётся.
Эта страница — перевод английской версии. При расхождениях приоритет имеет английская версия.