一、SSH协议相关概念

SSH:secure shell,protocal,22/tcp,安全的远程登录;

利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题,用来代替早期不安全的telnet

具体的软件实现:

  • OpenSSH:ssh协议的开源实现。CentOS默认安装

  • dropbear:另一个开源实现

SSH协议版本:

  • v1: 基于CRC-32做MAC,不安全;man-in-middle

  • v2:双方主机协议选择安全的MAC方式

基于DH算法做密钥交换,基于RSA或DSA实现身份认证

相关包:

openssh

openssh-clients

openssh-server

工具:

基于C/S结构:

Client:

      Linux:ssh,scp,sftp,slogin

    Windows:xshell,putty,securecrt,sshsecureshellclient

Server:sshd

客户端组件:

ssh, 配置文件:/etc/ssh/ssh_config

Host PATTERN

StrictHostKeyChecking no 首次登录不显示检查提示

格式:

ssh [user@]host [COMMAND]

ssh [-l user] host [COMMAND]

选项:

-p port              远程服务器监听的端口

-b              指定连接的源IP

-v              调试模式

-C              压缩方式

-X              支持x11转发,跨网络的图形界面显示;例如:xclock

-Y              支持信任x11转发

ForwardX11Trusted yes

-t               强制伪tty分配;堡垒机可用

ssh -t remoteserver1 ssh remoteserver2

两种方式的用户登录认证:

  • 基于password:

     只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间人”这种方式的攻击。

    大致流程:

    1. 客户端发起ssh请求,服务器会把自己的公钥发送给用户

    2. 用户会根据服务器发来的公钥对密码进行加密

    3. 加密后的信息回传给服务器,服务器用自己的私钥解密,如果密码正确,则用户登录成功

  • 基于key:

     需要依靠密匙,也就是你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在该服务器上你的主目录下寻找你的公用密匙,然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致,服务器就用公用密匙加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私人密匙解密再把它发送给服务器。

    大致流程:

    1. 首先在客户端生成一对密钥

    2. 并将客户端的公钥ssh-copy-id拷贝到服务器端

    3. 当客户端再次发送一个连接请求,包括ip、用户名

    4. 服务端得到客户端的请求后,会到authorized_keys中查找,如果有响应的IP和用户,服务器就会发出“质询”(challenge)表现为一串随机字符,如:acdf。

    5. 服务端将使用客户端拷贝过来的公钥对“质询”进行加密,然后发送给客户端

    6. 得到服务端发来“质询”后,客户端会使用私钥进行解密,然后将解密后的字符串发送给服务端

    7. 服务端接受到客户端发来的字符串后,跟之前的字符串进行对比,如果一致,就允许免密码登录

两种登录认证的对比:

基于key的认证方式,用户必须指定自己密钥的口令。但是,与第一种级别相比,第二种级别不需要在网络上传送口令。

第二种级别不仅加密所有传送的数据,而且“中间人”这种攻击方式也是不可能的(因为他没有你的私人密匙)。但是整个登录的过程会比基于passwd认证稍长,可能需要10秒

相关文件:

~/.ssh/authorized_keys          存放已授权基于key登录的主机的公钥

~/.ssh/know_hosts                  存放本机SSH连接过的主机的公钥

二、SSH服务器详解

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐