Родился 1 апреля 1836 года, сын майора Якова Ивановича Шелковникова. Образование получил в Новгородском кадетском корпусе, по окончании курса в котором 13 августа 1853 года был принят в Дворянский полк. Выпущен 17 июня 1854 года прапорщиком в лейб-гвардии Литовский полк. Во время Крымской войны 1854—1855 годов находился в составе войск, назначенных охранять северное побережье Финского залива в Санкт-Петербургской и Выборгской губерниях от возможной десантной высадки англо-французов. 17 июня 1855 года произведён в подпоручики и 23 апреля 1861 года — в поручики.