RedHat8 SSH应用

    技术2022-07-10  115

    远程协议

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

    SSH

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

    有两个不兼容的版本分别是:1.x和2.xSSH1采用对称加密算法保护数据安全传输(最终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

    Processed: 0.052, SQL: 9