Posts

Showing posts from March, 2019

Essential SSH commands

The following ssh commands are used by me in everyday development activity. So it prompted me to write a blog post about the essential SSH commands during java development. SSH to a remote server using username and password ssh username@remote-server-host-or-ip SSH to a remote server with a specific port (other than 22) ssh username@remote-server-host-or-ip -p 26 SSH to a remote server using private key (or identity file) ssh -i /path/to/private-key.pem username@remote-server-host-or-ip SSH to a remote server with agent forwarding The following command forwards your SSH auth schema to the remote host. So you can use SSH over there as if you were on your local machine. ssh -A username@remote-server-host-or-ip ssh -A -i /path/to/private-key.pem username@remote-server-host-or-ip Setup port forwarding with remote server The following command forwards traffic http://localhost:8080 <--> http://remote-server-host-or-ip:9090 http://localhost:8081 <--&g

Remote JVM monitoring using VisualVM

Image
Most of the modern JVM application frameworks like Spring Boot, Dropwizard and Ktor uses executable jars to bootstrap application with servers embedded inside the jar. The following steps will allow you to monitor the remote JVM running in cloud (or in house data center) using SSH port forwarding and Java JMX. In order to monitor the remote JVM, the java process needs to be started with extra system properties to enable JMX features and you should be able to SSH into the machine where the JVM is running. Start the Java application (or Java Process) with JMX enabled as given below: java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=10006 -Dcom.sun.management.jmxremote.rmi.port=10006 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.local.only=false -Djava.rmi.server.hostname=localhost -jar spring-boot-application.jar Create a SSH tunnel with port forwarding for JMX port ssh -L 10006