GrandOB

SSH协议实际应用

SSH

SSH公钥传输是SSH协议中用于安全通信的一种身份验证方式。它基于非对称加密算法,使用公钥和私钥进行身份验证和加密通信。以下是SSH公钥传输的原理:

  1. 生成密钥对:用户首先需要生成一对公钥和私钥。公钥用于加密数据并验证签名,私钥用于解密数据和生成签名。通常公钥被保存在远程服务器上,而私钥则由用户保存在本地。

  2. 传输公钥:当用户希望通过SSH连接到远程服务器时,他们需要将自己的公钥传输到服务器上。

  3. 身份验证:当用户尝试连接到服务器时,服务器会发送一个随机字符串给客户端,客户端使用私钥对该字符串进行签名。服务器使用保存的公钥来验证签名是否匹配。如果匹配,用户将被授权连接到服务器。

  4. 加密通信:一旦身份验证成功,SSH连接将使用公钥加密算法进行加密通信。这意味着所有传输的数据都会使用公钥加密,只有对应的私钥才能解密数据。

通过使用SSH的公钥传输,用户可以实现安全的远程连接和通信,同时免去了传统密码传输的安全隐患。公钥传输利用了非对称加密的特性,确保了身份验证和数据传输的安全性。

什么是SSH服务器?

SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程 复制等功能。SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令,SSH 为建立在应用层和传输层基础上的安全协议。对数据进行压缩,加快传输速度。

优点:

  • 数据传输是加密的,可以防止信息泄漏
  • 数据传输是压缩的,可以提高传输速度

ssh配置文件ssh:可以远程连接 scp sftp rsync:远程传输文件

ssh服务端主要包括两个服务功能 ssh远程链接和sftp服务(文件传输功能)

ssh配置文件

服务名称:sshd
服务端主程序:/usr/sbin/sshd  
服务端配置文件:/etc/ssh/sshd_config ----为服务器端配置文件,设置与服务端相关的应用可通过此文件实现
客户端配置文件:/etc/ssh/ssh_config ----为客户端配置文件,设置与客户端相关的应用可通过此文件实现

[root@rule ~]# cd /etc/ssh/
[root@rule ssh]# ls
moduli      sshd_config         ssh_host_ecdsa_key.pub  ssh_host_ed25519_key.pub  ssh_host_rsa_key.pub
ssh_config  ssh_host_ecdsa_key  ssh_host_ed25519_key    ssh_host_rsa_key

#ecdsa  代表加密算法    pub代表公钥(ssh_host_ecdsa_key.pub和ssh_host_ecdsa_key为一组公私钥、ssh_host_ed25519_key.pub和ssh_host_ed25519_key为一组公私钥、ssh_host_rsa_key.pub和ssh_host_rsa_key为一组公私钥)

ssh服务优化方式

  1. 建议使用非默认端口 22
  2. 禁止使用protocol version 1
  3. 限制可登录用户 白名单
  4. 设定空闲会话超时时长
  5. 利用防火墙设置ssh访问策略
  6. 仅监听特定的IP地址 公网 内网
  7. 基于口令认证时,使用强密码策略,比如:tr -dc A-Za-z0-9_ < /dev/urandom | head -c 12| xargs
  8. 使用基于密钥的认证
  9. 禁止使用空密码
  10. 禁止root用户直接登录
  11. 限制ssh的访问频度和并发在线数
  12. 经常分析日志 分离

基于秘钥登录

  1. 首先在客户端生成一对密钥(ssh-keygen)

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

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

  4. 服务端得到客户端的请求后,会到authorized_keys()中查找,如果有响应的IP和用户,就会随机生成一个字符串,例如:kgc

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

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

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

#一、生成秘钥
[root@saber ~]# ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):  ----选择秘钥加密方式
/root/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase):  ----设置秘钥的密码(设置则登录时需额外验证,空则为不设直接登录)
Enter same passphrase again:  ----二次确认密码
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:VMzaBTR1+Nq2upXEAN6owOzRTrPMbw5NUPXv/rEsUzc root@saber
The key's randomart image is:
+---[RSA 2048]----+
|         +B+o..  |
|     o . +o=oo   |
|      = *oo.o..  |
|     . O.=.  o.. |
|      . S .  oo .|
|         +  ..oE.|
|        . +  .+o+|
|         +   +o.o|
|          . oooo+|
+----[SHA256]-----+

#二、传输公钥给对应主机(秘钥默认为~/.ssh/下id_rsa私钥  id_rsa.pub公钥)
[root@saber .ssh]# ssh-copy-id -i 172.16.87.20
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@172.16.87.20's password:  ----输入对面密码

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh '172.16.87.20'"
and check to make sure that only the key(s) you wanted were added.

[root@saber .ssh]# ssh 172.16.87.20
Last login: Sat May  4 21:51:45 2024 from 172.16.87.1
[root@acher ~]# ls .ssh/
id_rsa  id_rsa.pub  known_hosts





#免密登录脚本


#!/bin/bash
PASS=123123
#设置网段最后的地址,4-255之间,越小扫描越快
END=254

IP=`ip a s ens33 | awk -F'[ /]+' 'NR==3{print $3}'`
NET=${IP%.*}.

rm -f /root/.ssh/id_rsa
[ -e ./SCANIP.log ] && rm -f SCANIP.log
for((i=3;i<="$END";i++));do
ping -c 1 -w 1  ${NET}$i &> /dev/null  && echo "${NET}$i" >> SCANIP.log &
done
wait

ssh-keygen -P "" -f /root/.ssh/id_rsa
rpm -q sshpass || yum -y install sshpass
sshpass -p $PASS ssh-copy-id -o StrictHostKeyChecking=no $IP

AliveIP=(`cat SCANIP.log`)
for n in ${AliveIP[*]};do
sshpass -p $PASS scp -o StrictHostKeyChecking=no -r /root/.ssh root@${n}:
done

posted on 2024-05-04 22:59  OB书写  阅读(17)  评论(0编辑  收藏  举报

导航