🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# ssh介绍和部署 [TOC] ## 1 介绍 ssh实现在传输数据的时候,加密传输,用于远程登录会话和为其他网络服务提供安全性协议 ### 1.1 SSH知识点总结: * ssh是安全的加密协议,用于远程连接linux服务器 * ssh默认端口22,有两个版本ssh2和ssh1,版本1有漏洞不用 * ssh服务主要提供两种:ssh服务和SFTP服务 * linux ssh客户端包含ssh远程连接命令,远程拷贝命令scp ### 1.2 SSH加密流程 * 服务端产生768字节公钥(server key) * 客户端向服务端发生请求 * 服务端返回该公钥给客户端 * 客户端产生256字节私钥(private key)并与公钥组成1024字节的密钥对(key pair) 客户端将密钥对发送给服务端,后续通信就使用此密钥对验证数据 密钥存放位置: ~/.ssh/known_hosts ### 1.3 SSH的认证类型 1) 基于口令的安全验证 只需要口令就能连接,不安全 2) 基于密钥的安全验证 大批量管理时使用的方法,安全.认证流程如下: * ssh管理服务器上创建密钥对信息(公钥 私钥) vssh管理服务器上将公钥发送给被管理服务器 * ssh管理服务器向被管理服务器发送连接请求 * ssh被管理服务器向管理服务器发送公钥质询 * ssh管理服务器处理公钥质询请求,将公钥质询结果发送给被管理主机 * ssh被管理服务器接收公钥质询响应信息,从而确认认证成功 * ssh管理服务端可以和被管理服务端建立基于密钥连接登录 ## 2 秘钥方式部署和配置讲解 ### 2.1 部署 1) 管理主机上创建秘钥对 ```sh ssh-keygen -t dsa ``` ![mark](http://noah-pic.oss-cn-chengdu.aliyuncs.com/pic/20200410/222341371.png) 2) 分发公钥给被管理主机 ```sh ssh-copy-id -i /root/.ssh/id_dsa.pub 172.16.1.31 会要求输入被管理主机密码 ``` 3) 进行测试 ```sh ssh 172.16.1.31 如果不提示输入密码,则配置成功 ssh 172.16.1.31 uptime 可以只在被管理主机上执行命令而不登录主机 ``` ### 2.2 配置文件 1) 重要文件说明 ```sh /etc/init.d/sshd 服务程序,用start启动 /etc/ssh/sshd_config 服务端配置文件 /etc/ssh/ssh_config 客户端配置文件 ``` 2) sshd_config配置文件说明 ```sh Port 22 [安全]默认端口,建议改为其他的[52113] UseDNS [速度]是否使用DNS解析域名,建议改为no ListenAddress 0.0.0.0 [安全]监听地址,可配置仅监听内网卡IP PermitRootLogin no [安全]是否允许root用户登陆,建议禁止no PermitEmptyPasswords no [安全]是否允许空密码登陆,建议禁止no GSSAPIAuthentication no [速度]是否进行GSSAPI认证,设置为no ``` 3) sshd_config配置文件修改 用sed命令一次性修改 ```sh sed -i.ori '13i port 52113\nPermitRootLogin no\nPermitEmptyPasswords no\nGSSAPIAuthentication no\nUseDNS no' /etc/ssh/sshd_config 未修改内网监听项,一般需先配置好vpn后再修改 ``` 查看结果 ```sh sed -n '13,17p' /etc/ssh/sshd_config port 52113 PermitRootLogin no PermitEmptyPasswords no GSSAPIAuthentication no UseDNS no ``` ## 3 SSH使用和总结 ### 3.1 命令相关 1) SSH命令远程登录方式: ```SH ssh -p 52113 oldboy@172.16.1.61 指定端口和用户名链接到远程服务器,如果端口和用户名是默认的,可以不写 ssh -p 52113 oldboy@172.16.1.61 /sbin/ifconfig eth0 只远程登录到服务器执行相应命令,执行完毕仍然回到本机,即不登录 ``` 2) SSH分发公钥方法 直接使用分发命令 ```SH ssh-copy-id命令,默认端口和非默认端口,写法分别如下 ssh-copy-id -i .ssh/id_dsa.pub oldgirl@172.16.1.8 ssh-copy-id -i .ssh/id_dsa.pub "-p 52113 oldgirl@172.16.1.31" 上传到服务器以后,存放在对方用户的家目录下的.ssh隐藏文件夹中,并且会自动更名和修改权限 ls -l .ssh/ -rw------- 1 oldgirl oldgirl 601 11月 4 09:16 authorized_keys 目录权限700,公钥文件权限600,且自动改名 ``` 如果不能用远程拷贝命令的方法 用其他方式传输公钥到目标服务器,然后追加到公认证文件中[authorized_keys] ``` cat id_rsa.pub >>/root/.ssh/authorized_keys ``` ### 3.2 防止SSH登录入侵小结: 1) 用密钥登录,不用密码登录 2) 牤牛阵法:解决SSH安全问题 * 防火墙封闭SSH,指定源IP限制(局域网、信任公网) * 开启SSH只监听本地内网IP(ListenAddress 172.16.1.61) 3) 尽量不要给服务器外网IP ### 3.3 SSH重点知识小结 * ssh为机密的远程连接协议,相关软件有openssh,opensshl * 默认端口22 * 协议版本1.x和2.x,2.x更安全,要明白ssh协议原理 * 服务端ssh远程连接服务,sftp无法,sshd有首付进程,开机要自启动 * ssh客户端包含ssh,scp,sftp命令 * ssh安全验证方式:口令和密钥,要明白密钥登录原理 * ssh服务安全优化,修改默认端口,禁止root远程,禁止空密码,禁止dns,只监听内网 * ssh密钥对,公钥在服务端(public key),私钥在客户端(private key)