We would like to avoid the changes to 'chef/lib/chef/application/knife.rb' because that requires plugin developers to return with a reasonable value. They totally should, but we've never asked them to in the past.
Instead, lets exit in 'chef/lib/chef/knife/ssh.rb' around line 350
Should we exit 1 if anything fails, or if everything fails? Tough question. Either is probably okay, since we currently exit 0 for everything there is no expectation.
Can we patch unix to accept an array of return codes?