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密码为空,则可以免密码登录。

posted @ 2022-02-12 13:09  小小小怪将军  阅读(366)  评论(0编辑  收藏  举报