client in erlang

Report 0 Downloads 72 Views
SSH SERVER/CLIENT IN ERLANG

Milad Rastian twitter/github: @slashmili High Mobility Developer Platform for Connected Cars

Quick Overview

What is SSH?

http://ssh-comparison.quendi.de/

SSH Protocol User terminal

Shell

SSH agent

Agent socket

SSH client

SSH server User key Password

Public key Password

SSH Protocol User terminal

Shell

SSH agent

Agent socket

SSH client

SSH server User key Password

Public key Password

SSH Protocol User terminal

Shell

SSH agent

Agent socket

SSH client

SSH server User key Password

Public key Password

SSH user@host ls /etc/

What is SSH again?

History of SSH

1995 SSH1

1999 OpenSSH

2006 SSH-2

History of SSH

1986 Erlang

1995 SSH1

1999 OpenSSH

2006 SSH-2

Cryptography 101

En/Decryption

plaintext

cipher(key)

ciphertext

Encryption algorithms

Symmetric

Asymmetric

Encryption using both technique Alice

Bob random key(bulk key)

Encrypt the plain text(cipher text)

Encrypt bulk key by Bob’s public key

Encrypted bulk key + cipher text

Diffie-Hellman Alice

Bob Common point

Secret colors

Public transport

Secret colors

Common point

The Architecture of an SSH System Session Client

User key

Server

Session key

Host key

Establishing the Secure Connection Client

Server Opens TCP connection SSH-2.0-Erlang/4.6.4 SSH-2.0-OpenSSH_7.2p2 Send a large random prime number and list of supported features

Use the prime number to create a temporary key pair

Sends its temporary public key Sends its temporary public key

Uses its own private key and others party public key to create session key

Client Authentication • Password authentication • Public-Key authentication

Client Authentication Public-Key authentication

Client

Server Sends ID for the key pair

Generates random bit as challenge and encrypted Decrypt it using its private key and send it back to server OK

SSH Channel Client

Server

SSH agent

Agent socket

X11 forward

X Server

Local forward

TCP connection

TCP connection

Remote Forward

Exec

Exec

Session exec SCP

Filesystem

Session SFTP

Filesystem

User terminal

Session shell

Setting up Server Keys

http://bit.ly/why-choose-ecdsa

Application List

Basic SSH Server

Basic SSH Server

Basic SSH Server with Public Key

Basic SSH Server with Public Key

SSH Server with callbacks

SSH Server with callbacks

SSH Server with Elixir Shell

SSH Server with Elixir Shell

SSH Server with Custom Public Key backend Client

Server ssh user@host with public key X OK/Not Ok

SSH key storage

d n a ? e tc h m a a n ym r e e s u ck s I bli pu o /N s Ye

SSH Server with Custom Public Key backend

SSH Server with Custom Public Key backend

SSH @ssh-talk.xyz

Simple Git Server

https://github.com/slashmili/gixir-server

SSH Client using password

SSH Client using Public Key

SSH Subsystem

SSH Server/Client with subsystem

SSH Server/Client with subsystem

Read more

•SSH, The Secure Shell: The Definitive Guide •http://erlang.org/doc/man/ssh.html •https://github.com/jbenden/esshd •https://github.com/bitcrowd/sshkit.ex •https://github.com/drowzy/ssh_tunnel

THANK YOU