SSH是一个安全的远程连接,它的数据信息是加密的,端口号为22,SSH服务默认可以为root用户连接。 TELNET是一个不安全的远程连接,它的数据信息为明文,端口号为23,默认不可以用root用户连接。
(1)客户端 执行远程连接命令 (2)客户端 服务端 建立三次握手过程 (3)服务端 让客户端进行确认是否接收服务端公钥信息 (4)客户端 进行公钥确认,接收公钥信息 (5)服务端 让客户端确认登录用户密码信息 (6)客户端 进行密码信息确认 (7)客户端 服务器 远程连接建立成功
基于秘钥的方式进行远程连接: 公钥和私钥可以完成身份认证工作
基于秘钥方式连接过程(原理)
(1)创建一个密钥对信息
ssh-keygen -t dsa
(2)管理端需要将公钥进行分发
ssh-copy-id -i /root/.ssh/id_dsa.pub root@172.16.1.31
(3)远程测试
ssh root@172.16.1.31 hostname
ssh 172.16.1.31
(1)安装软件
yum install -y sshpass
(2)执行免交互式分发公钥信息
sshpass -p 123456 ssh-copy-id -i /root/.ssh/id_dsa.pub root@172.16.1.41
(3)如何不要输入连接yes或no的确认信息
ssh-copy-id -i /root/.ssh/id_dsa.pub root@172.16.1.41 "-o StrictHostKeyChecking=no"
(4)服务端口号发生变化
sshpass -p 123456 ssh-copy-id -i /root/.ssh/id_dsa.pub root@172.16.1.41 "-o StrictHostKeyChecking=no"
vim fenfa_pub_key.sh
#!/bin/bash
for ip in {7,31,41}
do
echo "================= host 172.16.1.$ip pub-key start fenfa ======="
sshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa.pub root@172.16.1.$ip "-o StrictHostKeyChecking-no" &>/dev/null
echo "host 172.16.1.$ip fenfa success"
echo "================= host 172.16.1.$ip fenfa end ==================="
echo ""
done
/etc/ssh/sshd_config
Port 22 --- 修改服务端口信息
ListenAddress 0.0.0.0 --- 监听地址 指定一块网卡能够接受远程访问请求
PS: 指定监听地址只能是本地网卡上有的地址
PermitEmptyPasswords no --- 是否允许远程用户使用空密码登录,默认不允许
PermitRootLogin yes --- 是否禁止root用户远程连接主机 建议改为no
GSSAPIAuthentication no --- 是否开启GSSAPI认证功能 不用的时候关闭
UseDNS no --- 是否开启反向DNS解析功能 建议进行关闭
1、用密钥登录,不用密码登陆 2、牤牛阵法:解决SSH安全问题 a.防火墙封闭SSH,指定源IP限制(局域网、信任公网) b.开启SSH只监听本地内网IP(ListenAddress 172.16.1.61)。 3、尽量不给服务器外网IP 4、最小化(软件安装-授权) 5、给系统的重要文件或命令做一个指纹 /etc/passwd md5sum 11110000aaaabbbb 监控 inotify /bin 监控 6、给他锁上 chattr +i PS:SSH相关的命令总结
ssh-keygen
ssh-copy-id
sshpass
ssh
scp
sftp 172.16.1.41
ls 查看远程ftp服务器信息
cd --- 查看远程ftp服务器信息
lls 查看本地ftp客户端信息
lcd --- 查看本地ftp客户端信息
get --- 下载信息
put --- 上传信息
help --- 查看命令帮助
bye --- 退出ftp连接