http://blog.robertelder.org/what-is-ssh/git
什么是ssh?web
ssh是一个在计算机之间实现安全通讯的网络协议。一般人们在谈论使用ssh时,更多的是在说为了在另一台计算机上执行一些命令而使用ssh client来链接到那台ssh服务器上。现代的计算机一般都既能够运行ssh client也能够跑ssh server.好比,执行如下命令:安全
ssh robert@192.168.0.123 "ls"
这条命令将试图使用'robert'这个username去远程登陆192.168.0.123这个机器。一旦登陆成功,它便试图去运行命令"ls",而且随后直接退出ssh session.为了这个过程可以工做,你可能须要键入远程机器的robert密码,或者使用其余的鉴权机制。服务器
若是你在后面不加"ls"的命令,你将得到一个交互的session,你能够在远程机器上执行无限多的命令,直到你敲"exit"退出session.网络
在计算机之间拷贝文件session
你能够经过‘scp’命令使用ssh协议在计算机之间拷贝文件:ssh
scp /tmp/my_file robert@192.168.0.123:/mnt/my_file # From your computer to 192.168.0.123 scp robert@192.168.0.123:/mnt/my_file /tmp/my_file # From 192.168.0.123 to your computer
为其余服务提供隧道服务tunneling加密
这其实是ssh真正欠打的地方。你可使用ssh经由ssh连接来为上层应用提供安全的数据传输隧道。好比,你能够在你本身家里搭建一个git repo做为远程备份用机。你可使用下面的命令来clone repo:spa
git clone my-server:~/my_git_repo.git
最后,你甚至能够tunnel traffic on a port by port basis. 这容许你将远程服务当成本地服务同样来使用。好比,你能够容许将本地的一个web server或者database server用于接收来自任何地方的connections,只要使用一个有公网ip的proxy server便可。code
为何咱们要用ssh?
在ssh以前,有一些更老也不安全的替代方案,好比telnent, ftp.这些老的协议之因此不安全,是由于login的信息明码传输,而ssh因为密码仅在安全通道创建后才会传输出去。ssh也支持公钥密码加密的方式,这比传统的基于password的认证更加安全。
ssh public and private keys
ssh能够以passowrd鉴权方式工做,但更加现代的方式是使用public key cryptography方式,而不是password方式。这对于初学者每每容易犯晕。实际上没有那么复杂,只要你多作几回,你就会以为一切很天然。
大多数人已经习惯于传统密码认证方式:人们输入用户名和密码而且发往服务器鉴权。server而后检查password是否匹配以便决定是否容许你访问。而public key cryptography鉴权机制则有些不一样,