- HubPages»
- Technology»
- Computers & Software»
- Computer Science & Programming
Establishing SSH Hand-Shake
SSH Key
An SSH Key is a credential used in the SSH protocol (also reffered to as Secure Shell) to establish a secure remote login from one computer to another. It provides for strong authentication and it protects communications security and integrity with strong encryption. It s a secure althernative to a non-protected login protocols such as (telnet, rlogin, and insecure file transfer methods (ftp).
The SSH Protocol
The protocol works in a client-server model by establishing connection from an SSH client to an SSH server. The connection is driven by the client and establishes connection by using the public key crytography to verifiy the identity of the SSH Server. The SSH protocol after successful handshake uses the strong encryption hashing algorithms to ensure the privacy and integrity of the data that is exhanged between the client and server.
The ssh-keygen command
There are several options when using the ssh-keygen command. As listed below:
Usage: ssh-keygen [options] Options: -b bits Number of bits in the key to create. -c Change comment in private and public key files. -e Convert OpenSSH to IETF SECSH key file. -f filename Filename of the key file. -i Convert IETF SECSH to OpenSSH key file. -l Show fingerprint of key file. -p Change passphrase of private key file. -q Quiet. -y Read private key file and print public key. -t type Specify type of key to create. -B Show bubblebabble digest of key file. -C comment Provide new comment. -N phrase Provide new passphrase. -P phrase Provide old passphrase.
The "ssh-keygen -t rsa" will create the ssh key for user:
Generating public/private rsa key pair. Enter file in which to save the key (/export/home/userid/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /export/home/userid/.ssh/id_rsa. Your public key has been saved in /export/home/userid/.ssh/id_rsa.pub. The key fingerprint is: 0f:85:1d:30:a9:e3:ba:c4:34:80:68:ea:73:c8:82:a4 userid@sshclientserver
Files Generated
/export/home/userid/.ssh>ls -l id* -rw------- 1 userid usergrp 887 Apr 11 08:48 id_rsa -rw-r--r-- 1 userid usergrp 238 Apr 11 08:48 id_rsa.pub /export/home/userid/.ssh>cat id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAzvOj7VjLfDpHwmbdrdQAsiNeTTg+ M2X2d8+nSM8HZQlNoX5EWZFVCDQP2ORbKS79nrkdrrQzyJhKdeLktabdqNrVQn5J S4umnHgvoQySa7Fi6SVXyWLSzECC9L0SOxlaHVvhs36oGNJq+fSl+kqWv3qA0aJm YyTDIzXefRRqqak= userid@clientservername /export/home/userid/.ssh>cat id_rsa -----BEGIN RSA PRIVATE KEY----- MIICXAIBAAKBgQDO86PtWMt8OkfCZt2t1ACyI15NOD4zZfZ3z6dIzwdlCU2hfkRZ kVUINA/Y5FspLv2euR2utDPImEp14uS1pt2o2tVCfklLi6aceC+hDJJrsWLpJVfJ YtLMQIL0vRI7GVodW+GzfqgY0mr59KX6Spa/eoDRomZjJMMjNd59FGqpqQIBIwKB gQCreWqRdXVm7nX42OOQB25KdROfEVgb9WXQ/INK9K5bB7VZ7EdC5iHiOcP82ndr RDE6Xt4UaWy8JmmU4JGd02cypD5TNeUJ/VvNCcOWaIghJ4Er9YRWESVYrKzH/uek F+vb+Fh0t+ZW8GgiPA0OcPaxQgfY0h/vmaQ84EUL6KgAhwJBAPpytPbwLb7z1fh4 /zOauOQNXZtnAbuUTsGguGLljqJULlwKfhOERl03JMQwK3PoLKX3PbV1h4FM4BJj SLOtGysCQQDTihdycNPzMlNz7eN+HnBONTwAhgeA5UdwsJptJsMcXAjUHQDT0Aht igQlxydXLJDCo2rvV45T9qo4HwuFvdR7AkEApJSFjFSwWOlguTmRwtNjjoxwtpQl tcfb+5WAe4Dos9DrQ8xheoofnFdv7qNPwTIr+AjfaJ2w0U/GcnvCD6xFDQJAZr9q eWoAjBEhOE75d8WkQz5tmdqzL/pV5kcmb4fbHGc3fPgk+SqHwC0X9ReWw/ETHLXG ObzQGidZ/gBzT5a3qQJBAL38P/8cjxTjvvkjc+XE7+7n2CQpXEb+IpoytCIUdD9O UDvDJUMNt/gCyiIfnNXN8uSgdPsPHe++NrSu18D//qk= -----END RSA PRIVATE KEY----- /export/home/userid/.ssh>
Create-Upload ssh to SSH Server
Create the directory
ssh userid@sshserver mkdir -p .ssh
You will be prompted for credentials
Upload the id_rsa.pub command
cat .id_rsa.pub|ssh userid@sshserver 'cat >> .ssh/authorized_keys'
Change permissions
ssh userid@sshserver "chmod 700 .ssh; chmod 640 .ssh/authorized_keys"
You can now logon to sshserver without any password
SSH-Script via FTP
The following script will allow you to generate the SSH key and ftp to destionation SSH server and added it to the authorized_keys file without being prompted.
#!/bin/bash # ------------------------------------------- # Generate the key # ------------------------------------------- cd $HOME mkdir -p $HOME/.ssh cd $HOME/.ssh ssh-keygen -q -t rsa -N '' -f $HOME/.ssh/id_rsa # ------------------------------------------- # FTP/APPEND key to the destination # ------------------------------------------- FL=id_rsa.pub DEST=ipaddress TODIR=/home/userid/.ssh FLDIR=$HOME/.ssh USERID=userid PASSWD=userpasswd ftp -v -n $DEST <<EOF; user $USERID \ $PASSWD lcd $FLDIR cd $TODIR append $FL authorized_keys EOF exit 0