diff --git a/packages/verae-fleet/src/ssh.js b/packages/verae-fleet/src/ssh.js index 97adee6..e8a86c7 100644 --- a/packages/verae-fleet/src/ssh.js +++ b/packages/verae-fleet/src/ssh.js @@ -30,6 +30,7 @@ export function sshTarget(machine) { export function sshBaseArgs(machine) { const ident = expandHome(machine.identityFile || ''); const args = [ + '-n', '-o', 'BatchMode=yes', '-o', 'StrictHostKeyChecking=accept-new', '-o', 'IdentitiesOnly=yes', @@ -126,7 +127,8 @@ export async function sshSpawnWorker(machine, { instance, env }) { .filter(([k]) => k.startsWith('FLEET_')) .map(([k, v]) => `${k}=${shellQuote(v)}`) .join(' '); - const cmd = `mkdir -p ${remoteDir}/data/${instance} && cd ${remoteDir} && ${fleetEnv} nohup node src/worker.js >data/${instance}/worker.log 2>&1 & echo $!`; + const inner = `node src/worker.js data/${instance}/worker.log 2>&1 & echo $!`; + const cmd = `mkdir -p ${remoteDir}/data/${instance} && cd ${remoteDir} && ${fleetEnv} bash -c ${shellQuote(inner)}`; const { stdout } = await sshExec(machine, cmd); const pid = Number(String(stdout).split('\n').pop()); if (!Number.isFinite(pid)) throw new Error(`remote spawn produced no pid: ${stdout}`);