As l1thal pointed out, your question is quite broad. So I will try to advice you based in my personal experience.
First of all, you need network knowledge: you need to understand how a network works in detail. For example, how to setup routers, network-related services (dhcp, dns, gateways, proxys, firewalls, file-sharing, etc), protocols and ports.
You need to learn about data protection (understand about SSL certificates, encryption methods, password hashing, etc).
I would strongly recommend to learn Linux (more specific, search for a security distribution like Kali). Learn how to use nmap, metasploit and many of the tools that are included there. You can also learn about IDS/IPS and common hacking techniques, such as "SQL injection", XSS attacks and vulnerability exploits.
About programming languages, I think it depends on which platform you want to use and the area you want to focus on. If you go with Linux, then C/C++, Perl, Ruby, Python, Java, Bash are some of the languages you could learn. If you want to focus in web security, then PHP, Javascript, SQL and settings for apache, nginx, mysql, postgresql, etc, are advisable.
In order to gain all that knowledge you need to practice. I suggest you to check vulnhub.com, from which you can download vulnerable virtual machines to practice some of the hacking techniques. Once you understand how its done, you can learn how to protect against such attacks.
Subscribe yourself into security channels, read security related magazines and keep coming into this site to keep you updated and expand your knowledge.
Anyway, its hard to include everything, but I guess this will cover the basics. Be aware that it will take a lot of time, but enjoy the ride!
I'm sure I may be missing out something, so please let me know with your comments.