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…——要么是 ssh-keygen -l 打印出的 SHA-256 指纹,如 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 之前,请删除行首的主机名:仍以主机名开头的条目无法被解析。

S. Smart Rabbit LLC © All Rights Reserved            updated 2026-09-25 00:02:29

本页为英文版的翻译。如内容有出入,以英文版为准。

results matching ""

    No results matching ""