Ok, precisamos de um pouco de história aqui, nos dias em que a principal forma de acessar uma caixa UNIX era um Terminal e uma linha serial, havia quatro programas envolvidos no login. Eles eram init, getty, login e um Concha. O init iniciou o getty e o manteve em execução. getty abriu uma porta serial (e talvez fez coisas específicas de modem) e, em seguida, exibiu o prompt de login e esperou que um nome de usuário fosse inserido. Quando um nome de usuário foi inserido, o getty rodou o login com o nome de usuário e o login solicitaria a senha, fazia as informações da conta e executava o shell. Nesse ponto, você poderia usar o sistema. Isso ainda é usado em datacenters, máquinas virtuais e muitos outros lugares.
Em seguida veio o telnet. O Telnet não usou uma porta serial, então as coisas mudaram um pouco. O init iria além do getty também iniciar o telnetd (ou o inetd que iniciaria o telnetd) o telnetd obteria o nome de usuário e então executaria o login e tudo seria executado da mesma maneira.
Agora vem o shell seguro. Agora shell seguro permite que você faça o login sem uma senha (usando uma chave ou talvez dependendo da versão GSS) para que houvesse algumas maneiras de fazer as coisas, você poderia fazer coisas exatamente como telnet e não usar os recursos legais ou você pode deixar sshd o login e iniciar o shell que permite que você faça todos os tipos de coisas legais. A menos que você tenha uma versão personalizada de login, recomendo que você deixe o sshd manipular os logins. (E se você tiver pam, não há muitos motivos para fazer um login personalizado).