RedHat8 SSH应用

远程协议

  • telnet,默认端口23,传输无加密
    • 通常被当成检测TCP端口存活使用,生产环境不建议使用
  • ssh,默认端口22,传输基于加密
    • 默认使用远程方式

SSH

SSH(Secure Shell)安全shell缩写,可以基于RSA非对称加密和HA密钥交换算法实现加密传输。

  • 有两个不兼容的版本分别是:1.x和2.x
  • SSH1采用对称加密算法保护数据安全传输(最终2边秘钥相同),而对称加密算法的密钥是通过非对称加密算法(RSA,2边不同,需要通过秘钥进行解密,防止秘钥被窃听)来完成交换的。SSH1使用循环冗余校验码(CRC)来保证数据的完整性,但是后来发现这种方法有缺陷。
  • SSH2避免了RSA的专利问题,并修补了CRC的缺陷。SSH2用数字签名算法(DSA)和Diffie-Hellman(DH)算法代替RSA来完成对称密钥的交换,用消息证实代码(HMAC)来代替CRC。
  • RSA基于公钥的方式,DH基于签名证书方式

OpenSSH 7.0及以上版本默认禁用了ssh-dss(DSA)公钥算法,官方建议不要使用,但是可以开启

http://www.openssh.com/legacy.html

openssh

OpenSSH 是 SSH (Secure SHell) 协议的免费开源实现。

  • 兼容1.x和2.x,默认开启2.x和RSA秘钥
  • 守护进程:sshd
  • /etc/ssh/sshd_config 配置文件
  • $home/.ssh 秘钥路径
  • openssl是传输加密协议(https、sftp等)

秘钥文件

  • id_rsa 私钥文件进行解密使用(服务保留)
  • id_rsa.pub 公钥文件进行加密使用(对外使用)
    • 反之就是私钥加密,公钥解密
  • known_hosts 记录访问者的key,当下次访问相同计算机时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。
  • authorized_keys(授权)
    • 加入别人的公钥为了让两个linux机器之间使用ssh不需要用户名和密码
    • 加入自己的公钥为了其他用户ssh远程使用key登入

配置文件(常见使用)

Port 22 #默认端口,一般建议修改
PermitRootLogin yes #默认开启,开启root用户登入,安全考虑关闭,使用普通用户登入进行su切换
StrictModes yes  #接受连接请求前对用户家目录和rhosts文件的权限和所有权检查,预防可能出现的低级错误
MaxAuthTries 6   #最大允许认证次数
MaxSessions 10   #每个网络允许打开会话的最大数量
PubkeyAuthentication yes   #启用公钥认证,SSH二代通讯协议
AuthorizedKeysFile .ssh/authorized_keys  #指定公钥库位置
PermitEmptyPasswords yes   #不允许空密码用户登录
PasswordAuthentication yes   #启用密码验证
UseDNS no   #禁用反向解析,加快ssh的连接
以下为说明
RSAAuthentication yes   #SSH一代通讯协议(7.4版本后已经弃用)
#配置自然也就没有了,所有不用加上这个配置,只要开启PubkeyAuthentication即可

服务器之间免密登入

A服务器:192.168.26.133
B服务器:192.168.26.137

A服务器操作(B服务器同样操作)
ssh-keygen -t rsa -b 4096  
#官网建议秘钥长度为4096
#过程全部回车,不要设置key密码
ssh-copy-id -i id_rsa.pub root@192.168.26.137
#直接复制本地的公钥到B服务器上,B服务器会自动创建authorized_keys文件

权限设置
chmod go-w $HOME $HOME/.ssh
chmod 600 $HOME/.ssh/authorized_keys
chown `whoami` $HOME/.ssh/authorized_keys
#如果StrictModes为yes必需保证存放公钥的文件夹的拥有与登陆用户名是相同的
#另一个方案就是StrictModes为no,但是不建议

配置文件
vi /etc/ssh/sshd_config
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys
systemctl restart sshd

PasswordAuthentication yes
#服务器之间免密登入跟PasswordAuthentication没有关系,只要加入授权authorized_keys

参考权限设置:http://doc.okbase.net/onionsheep/archive/103053.html

配置SSH远程基于公钥

ssh-keygen -t rsa -b 4096  
#官网建议秘钥长度为4096
#密码看需求配置,如果配置了服务器免密,就不要密码

touch authorized_keys
cat id_rsa.pub >> authorized_keys
#追加自己的公钥加入授权文件里,不然key无效
权限设置
chmod go-w $HOME $HOME/.ssh
chmod 600 $HOME/.ssh/authorized_keys
chown `whoami` $HOME/.ssh/authorized_keys

配置文件
vi /etc/ssh/sshd_config
PasswordAuthentication no
#关闭密码认证,不然就或的关系,密钥和密码只要认证一个就能登入
AuthenticationMethods publickey,password
#可以设置密码和密码同时需要认证,与关系
将私钥id_rsa拷贝到远程客户端
systemctl restart sshd

总结

会发现服务器之间SSH和本地远程客户端之间SSH对于key有点区别

服务器之间SSH,authorized_keys存放的是别人的公钥key
本地远程客户端之间SSH,authorized_keys存放的是自己的公钥key

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值