Add Mosh parity hardening
ci / test (push) Has been cancelled
ci / fuzz-smoke (push) Has been cancelled
ci / windows-client (push) Has been cancelled
ci / package-release (linux-x86_64, ubuntu-latest) (push) Has been cancelled
ci / package-release (macos-aarch64, macos-14) (push) Has been cancelled
ci / package-release (macos-x86_64, macos-13) (push) Has been cancelled
ci / package-release (windows-x86_64, windows-latest) (push) Has been cancelled
ci / remote-bench (push) Has been cancelled

This commit is contained in:
DuProcess
2026-06-21 10:23:06 -04:00
parent 689d2a9575
commit a029564d80
7 changed files with 509 additions and 46 deletions
+15 -1
View File
@@ -14,6 +14,8 @@ pub struct ServerConfig {
pub allow_attach_tickets: bool,
pub client_timeout_secs: u64,
pub retransmit_window: usize,
#[serde(default = "default_output_frame_interval_ms")]
pub output_frame_interval_ms: u64,
pub default_input_mode: String,
pub prewarm_sessions: Vec<String>,
pub create_on_attach: bool,
@@ -68,8 +70,9 @@ impl Default for ServerConfig {
auth_ttl_secs: 30,
attach_ticket_ttl_secs: 3600,
allow_attach_tickets: true,
client_timeout_secs: 86400,
client_timeout_secs: 2_592_000,
retransmit_window: 256,
output_frame_interval_ms: default_output_frame_interval_ms(),
default_input_mode: "read-write".to_string(),
prewarm_sessions: vec!["default".to_string()],
create_on_attach: true,
@@ -132,6 +135,8 @@ pub struct ClientConfig {
/// full-screen TUI, and cleared the instant packets resume. Default on.
#[serde(default = "default_true")]
pub disconnect_status: bool,
#[serde(default = "default_escape_key")]
pub escape_key: String,
#[serde(default = "default_send_env")]
pub send_env: Vec<String>,
#[serde(default)]
@@ -205,6 +210,7 @@ impl Default for ClientConfig {
use_ssh_agent: true,
forward_agent: false,
disconnect_status: true,
escape_key: default_escape_key(),
send_env: default_send_env(),
set_env: HashMap::new(),
extensions: HashMap::new(),
@@ -231,6 +237,10 @@ fn default_native_auth_rate_limit_per_minute() -> u32 {
30
}
fn default_output_frame_interval_ms() -> u64 {
16
}
fn default_rekey_after_packets() -> u64 {
// Rotate well before any AEAD nonce-reuse concern; ChaCha20-Poly1305 with a
// per-direction monotonic seq is safe far beyond this, but a bounded epoch
@@ -259,6 +269,10 @@ fn default_known_hosts() -> String {
"~/.config/dosh/known_hosts".to_string()
}
fn default_escape_key() -> String {
"^]".to_string()
}
fn default_identity_files() -> Vec<String> {
vec!["~/.ssh/id_ed25519".to_string()]
}