什么是SSH服务器?
SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程 复制等功能。SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令,SSH 为建立在应用层和传输层基础上的安全协议。对数据进行压缩,加快传输速度。
ssh服务的优点
数据传输是加密的,可以防止信息泄漏
数据传输是压缩的,可以提高传输速度
ssh原理
客户端发起链接请求
服务端返回自己的公钥,以及一个会话ID(这一步客户端得到服务端公钥)
客户端生成密钥对
客户端用自己的公钥异或会话ID,计算出一个值Res,并用服务端的公钥加密
客户端发送加密值到服务端,服务端用私钥解密,得到Res
服务端用解密后的值Res异或会话ID,计算出客户端的公钥(这一步服务端得到客户端公钥)
最终:双方各自持有三个秘钥,分别为自己的一对公、私钥,以及对方的公钥,之后的所有通讯都会被加密
命令登录:
此时是要使用密码的但我们可以直接密钥登录即可无需密码具体原理如下:
第一步生成密钥此处要填写的部分分别是生成文件位置密钥密码我们直接空格即可
发送密钥:直接登录即可:
#免密登录脚本
#!/bin/bash
PASS=123123
#设置网段最后的地址,4-255之间,越小扫描越快
END=254IP=`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
waitssh-keygen -P "" -f /root/.ssh/id_rsa
rpm -q sshpass || yum -y install sshpass
sshpass -p $PASS ssh-copy-id -o StrictHostKeyChecking=no $IPAliveIP=(`cat SCANIP.log`)
for n in ${AliveIP[*]};do
sshpass -p $PASS scp -o StrictHostKeyChecking=no -r /root/.ssh root@${n}:
done
ssh服务的最佳实践
配置文件的位置
配置文件的含义
认证与连接设置
ForwardAgent no
:禁止代理转发,即不允许SSH代理来转发本地机器上的SSH密钥。ForwardX11 no
:禁用X11转发(X11是Linux/Unix系统的图形界面标准)。RhostsRSAAuthentication no
:不使用基于.rhosts文件和RSA公钥的认证方式。RSAAuthentication yes
:允许RSA公钥认证。PasswordAuthentication yes
:允许使用密码进行认证。HostbasedAuthentication no
:禁用基于主机的认证。GSSAPIAuthentication no
:不使用通用安全服务API (GSSAPI) 进行认证。BatchMode no
:非批处理模式,即不是自动模式,通常在需要交互式登录时使用。CheckHostIP yes
:检查连接的服务器IP与已知host文件中的IP是否一致。StrictHostKeyChecking ask
:如果服务器的主机密钥未知或发生变化,则询问用户是否继续连接。文件和加密设置
IdentityFile ~/.ssh/identity
等:指定用于认证的密钥文件路径。Port 22
:指定SSH连接使用的端口,标准SSH端口为22。Protocol 2
:指明使用SSH协议版本2。Cipher 3des
:指定单一密码算法为3DES。Ciphers aes128-ctr, ...
:指定允许的加密算法列表。MACs hmac-md5, ...
:指定允许使用的消息认证码算法。其他设置
ConnectTimeout 0
:连接超时设为0,表示没有超时限制。Tunnel no
:不启用隧道。VisualHostKey no
:不显示视觉化的主机密钥。ProxyCommand ssh -q -W %h:%p gateway.example.com
:设置代理命令,用于通过另一台SSH服务器(如网关)来连接目标服务器。
scp
拷贝到远端:
scp 指定拷贝文件的路径 远端IP:指定存放位置从远端拷贝:
sftp:安全ftp上载
连接主机:
get下载put上传
quit退出