Existem dois lados para fazer esse trabalho. O cliente (PuTTY, etc.) precisa codificar as teclas pressionadas de forma que o software do servidor ( sh , bash , etc.) entenda e o software do servidor precise ter algum significado para o que recebe.
sh é shell Borne. Muitas vezes, não suporta o histórico de comandos da maneira que você deseja usá-lo. (Você pode dizer que as teclas de seta não estão sendo interpretadas porque você receberá algo como ^[[A em vez da resposta esperada.)
Você pode usar chsh para alterar seu shell para algo mais confortável, conforme descrito aqui . Talvez seja necessário também descobrir quais shells estão disponíveis no sistema em que você está logado, pois talvez não seja possível instalar o seu próprio. Os shells comuns são bash , ksh e zsh . Algo como which bash deve fornecer o nome do caminho, se existir.