Per evitare che sia possibile incollare nel campo qualunque cosa, ho impedito copy/cut/paste.
quanto mi infastidiscono questi trucchi da baraccone, alla pari di "ti blocco il click destro così non ti faccio copiare il mio contenuto"... dai su, di cosa stiamo parlando?!

...poi, capisco il paste ma che c'entrano il copy e il cut???

L'ideale sarebbe modificare la funzione in modo da impedire l'inserimento dello zero
Se lo impedisci a prescindere allora non potresti inserire nessun numero che abbia uno zero, per quanto sia maggiora di zero; cioè non potresti inserire 10, ad esempio, o 20 o 1230 o qualsiasi altro valore che non sia solo zero ma abbia un qualsivoglia zero al suo interno.

Il titolo della discussione ("Permettere solo numeri maggiori di zero") è chiaramente più esplicativo di quanto hai indicato poi.

e, se possibile, impedire il "paste", senza pasticciare il codice HTML
Gli eventi applicati come attributi sporcano il codice HTML a prescindere. Per mantenere il codice HTML pulito è buona norma applicare gli eventi via JavaScript.

Se ti serve qualcosa di funzionale, costruisciti un campo in cui viene filtrato ciò che viene inserito (qualsiasi cosa sia) e hai quello che ti serve.

Puoi usare l'evento input (supportato da tutti gli odierni browser) che viene innescato ogni qualvolta cambia il contenuto del campo (che si digiti dentro o si incolli qualcosa), quindi filtrare (ad esempio con un'espressione regolare) il valore del campo stesso e limitarlo ad un valore minimo (ad esempio con i metodi Math).

Qui uno snippet fatto su due piedi:
codice:
<!DOCTYPE HTML>
<html lang="it">
   <head>
      <title>Esempio</title>
      <meta charset="utf-8">
   </head>
   <body>
      <input type="text" name="km" class="form-control" id="km" placeholder="Digita i chilometri" required>
      <script>
         document.getElementById('km').addEventListener('input', function(){
            this.value = this.value.replace(/\D/g,'');                     // Consento solo cifre numeriche
            if (this.value !== '') this.value = Math.max(1, this.value);   // Se il valore non è vuoto lo limito ad un minoimo di 1 
         });
      </script>
   </body>
</html>
Certamente esistono millemila altre soluzioni ma, ti prego, se io voglio copiare, tagliare o incollare qualsiasi cosa nel mio browser, non impedirmi di farlo, altrimenti mi diventi antipatico



PS: un consiglio, se i dati inseriti vanno processati lato server e tu non sei uno sprovveduto, ricordati che gli stessi controlli usati lato client, per "aggiustare" i valori inseriti, è buona norma effettuarli analogamente lato server; perché tu puoi anche impedire di copiaincollare qualsiasi cosa nel tuo campo di testo ma l'utente smaliziato (al quale sei diventato antipatico) ci mette poco a pigiare F12 sul suo browser, inserire l'immondezza dentro i tuoi campi e darla in pasto al server