Linux系统SSH服务
原理
SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。
简单说,SSH是一种网络协议,用于计算机之间的加密登录。
如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。
在SSH之前,有telnet协议,也是一个远程登录协议,但它与SSH最大的不同就是telnet使用明文传输,一旦被截获,内容就暴露无疑,所以已经逐渐被淘汰,取而代之的是更为安全的SSH协议。
配置
如果要在Windows系统中使用SSH,会用到另一种软件PUTTY,这先暂时不说。
SSH服务配置文件在/etc/ssh目录下的sshd_config文件
可以通过
1 vi /etc/ssh/sshd_config ssh
编辑ssh配置
将下面四项修改成这样
1 Port 22 2 PermitRootLogin Yes 3 PubkeyAuthentication yes 4 PasswordAuthentication yes
然后重启ssh服务
1 systemctl restart ssh/sshd
此时ssh服务就已经基本配置完成。
基本用法
我使用的是两台centos7的虚拟机,在连接之前,将他们的主机名分别改为ser1和ser2,方便区分
vi /etc/hostname
设置完成后重启虚拟机即可。
假定你要以用户名root,登录远程主机host,只要一条简单命令就可以了。
1 ssh root@ip地址
SSH的默认端口是22,也就是说,你的登录请求会送进远程主机的22端口。使用p参数,可以修改这个端口。
ssh -p 23 root@ip地址
此时,ssh会连接到目标主机的23号端口。
口令登录
当第一次使用ser1登陆ser2时
这段话的意思是,无法确认host主机的真实性,只知道它的公钥指纹,问你还想继续连接吗?
输入yes之后,系统会出现一句提示,表示host主机已经得到认可。
此时输入ser2密码,登录成功。
之后再次登录时,便不会再出现警告部分了。
公钥登陆
使用密码登录,每次都必须输入密码,非常麻烦。好在SSH还提供了公钥登录,可以省去输入密码的步骤。
所谓"公钥登录",原理很简单,就是用户将自己的公钥储存在远程主机上。登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来。远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的,直接允许登录shell,不再要求密码。
在ser1上使用ssh-keygen生成密钥对
ssh-keygen
此时在/root/.ssh目录下即可发现生成的密钥对
id_rsa 为私钥,id_rsa.pub 为公钥。
私钥只能自己保存,不能泄露,公钥发给自己需要登陆的主机。
1 ssh-copy-id 目标ip
此时再输入一次ser2密码,将ser1公钥成功发送给ser2。
之后可以在目标主机的.ssh看到authorized_keys。
此时直接登陆ser2
1 ssh 目标ip
输入设置密钥对时的RSA密码即可登录。
rsa密码为空,则可以免密码登录。