[[https://pctresearch.com/|{{:wiki_banner.jpg?nolink&800|}}]] ===== SSH/OpenSSH/Keys ===== To install the OpenSSH client applications on your Ubuntu system, use this command at a terminal prompt: $ sudo apt install openssh-client To install the OpenSSH server application, and related support files, use this command at a terminal prompt: $ sudo apt install openssh-server ==== Public and Private Keys ==== | ^file name^client/Server^location^ ^**private key**|id_rsa|Client side|/home/pctr/.ssh| ^**public key**|id_rsa.pub|Server side|contents of /home/pctr/.ssh/authorized_keys| ==== Work As SSH Server ==== $ sudo ssh-keygen -A ^-A|Generate host keys of all default key types (rsa, ecdsa, and ed25519) if they do not already exist.| $ sudo /etc/init.d/ssh start Starting ssh (via systemctl): ssh.service. or $ sudo systemctl start ssh.service user(ex. pctr)'s home directory $ ssh-keygen -t rsa -b 4096 $ touch /home//authorized_keys === Recommended Setting of sshd_config === $ sudo vim /etc/ssh/sshd_config -- PasswordAuthentication no UsePAM yes X11Forwarding yes AllowUsers AllowGroups -- $ sudo systemctl restart ssh === ufw setting === $ sudo ufw allow from to any port comment 'Allow ssh from client' ex) $ sudo ufw allow from 192.168.1.0/24 to any port 22 comment 'Allow ssh from local' ==== Work as SSH Client - Generating RSA Keys ==== To create your public and private SSH keys on the command-line: user(ex. pctr)'s homedirectory $ mkdir ~/.ssh $ chmod 700 ~/.ssh $ ssh-keygen -t rsa -b 4096 You will be prompted for a location to save the keys, and a passphrase for the keys. This passphrase will protect your private key while it's stored on the hard drive: Generating public/private rsa key pair. Enter file in which to save the key (/home/b/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/b/.ssh/id_rsa. Your public key has been saved in /home/b/.ssh/id_rsa.pub. ==== About Key Encryption Level ==== Note: The default is a 2048 bit key. You can increase this to 4096 bits with the -b flag (Increasing the bits makes it harder to crack the key by brute force methods). ex) $ ssh-keygen -t rsa -b 4096 ==== Transfer Client Key to Host ==== The key you need to transfer to the host is the public one. If you can log in to a computer over SSH using a password, you can transfer your RSA key by doing the following from your own computer: $ ssh-copy-id @ If you can't log in to a SSH server using SSH with a password, you need to add a public key to /home//.ssh/authorized_keys on the SSH server side. In practice, copy and paste the entire contents of id_rsa.pub to the bottom of authorized_keys on the SSH server side. ==== to show the key's bit-size and fingerprint ==== $ ssh-keygen -l -f ==== change a ssh passphrase for private key ==== $ ssh-keygen -p ==== SSH login ==== $ ssh @ ==== Enter SSH passphrase once ==== $ ssh-agent bash $ ssh-add ~/.ssh/id_rsa ==== SSH client on Windows ==== === Generating SSH keys === First, create the SSH directory and then generate the SSH key pair.\\ One assumption is that the Windows profile you are using is set up with administrative privileges. Given this, you will be creating the SSH directory at the root of your profile, for example:\\ C:\Users\\\ To create the keys, type: C:\Users\ > ssh-keygen.exe or C:\Users\ > ssh-keygen -t rsa -C "me@email.com" You need to copy and paste the entire contents of id_rsa.pub to ~/.ssh/authorized_keys on server's user home directory. ==== Example of config on client ==== === WSL or ubuntu === /home/pctr/.ssh/config host ubuntu ForwardAgent yes ForwardX11 yes ForwardX11Trusted yes Hostname host_name_of_server Port xxxxx User pctr Usage of ssh connection $ ssh ubuntu === Windows === C:\Users\kan\.ssh\config Host pctresearch HostName host_name_of_server ForwardX11 yes ForwardX11Trusted yes IdentityFile "C:\Users\ptsr\.ssh\file_name_of_private_key" IdentitiesOnly yes AddressFamily inet User pctresearch Host * ServerAliveInterval 60 ServerAliveCountMax 10000 :!: AddressFamily - Specifies which address family to use when connecting. Valid arguments are any (the default), inet (use IPv4 only), or inet6 (use IPv6 only). Usage of ssh connection > ssh pctresearch