Linux下SSH以及SSH秘钥
一、基于秘钥方式实现远程连接
第一步:创建密钥对(在管理端服务器上操作)
中间的输入项可以直接回车
1 | ssh -keygen -t dsa |
第二步:分发公钥(在管理端服务器执行)
这个步骤需要输入一个yes和被管理的服务器密码
1 2 3 | ssh -copy- id -i /root/ . ssh /id_dsa .pub root@10.0.0.102 # 说明:将生成的公钥发放到将要管理的服务器上,例如上述root@10.0.0.102 |
第三步:验证
1、可以查看对应的秘钥信息
(1)查看管理端服务器
(2)查看被管理端服务器
2、验证连接
(1)方式1:直接连接
(2)方式2:执行命令
二、分发公钥时实现免交互
目的:原本分发公钥时,需要输入一次yes和password,实现不用输入yes和password,直接分发
1、去掉输入yes
加上参数 :-o StrictHostKeyChecking=no
1 | ssh -copy- id -i /root/ . ssh /id_dsa .pub 10.0.0.102 -o StrictHostKeyChecking=no |
2、去掉输入密码
第一步:安装 sshpass
1 | yum install -y sshpass |
第二步:发放公钥
1 | sshpass -p1 ssh -copy- id -i /root/ . ssh /id_dsa .pub 10.0.0.102 -o StrictHostKeyChecking=no |
三、管理多台主机,批量分发公钥
1、脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #!/bin/bash for ip in {7,31,41} do echo "===============start fenfa_Key to 172.16.1.$ip=========================" sshpass -p123456 ssh -copy- id -i /root/ . ssh /id_dsa .pub 172.16.1.$ip -o StrictHostKeyChecking=no &> /dev/null if [ $? - eq 0 ] then echo "===============pub_key fenfa ok with 172.16.1.$ip=========================" echo "" else echo "===============pub_key fenfa failed with 172.16.1.$ip=========================" echo "" fi done |
2、检查公钥分发是否成功
1 2 3 4 5 6 7 8 9 10 11 | #!/bin/bash if [ $ # -ne 1 ] then echo "Usage: $0 请在脚本后面输入一个命令信息" exit 100 fi for ip in {7,31,41} do echo "===============start fenfa_Key to 172.16.1.$ip=========================" ssh 172.16.1.$ip $1 done |
四、关于SSH
1、ssh-copy-id 分发公钥原理
1 2 3 4 | 1 、进行ssh远程连接 2 、scp将公钥进行传输 3 、被管理端将公钥保存到用户家目录中的.ssh目录中 4 、修改公钥文件名称和权限 authorized_keys 600 |
2、远程端口发生变化后如何修改命令分发公钥
(1)加上端口号 -p PORT(centos7适用)
1 | sshpass -p123456 ssh -copy- id -i /root/ . ssh /id_rsa .pub 172.16.1.7 -o StrictHostKeyChecking=no -p 52113 |
(2)连接的时候也需要加上端口号
1 | ssh -p52113 10.0.0.7 hostname |
3、SSH服务配置文件
(1)配置文件的位置:
1 | /etc/ssh/sshd_config |
(2)SSH相关配置
1 2 3 4 5 6 7 8 | #Port 22 --- 指定服务端口号信息 #ListenAddress 0.0.0.0 --- 指定相应网卡可以接收远程访问请求 web 默认:主机上所有网卡都可以接收远程连接请求 监听地址信息,一定是本地网卡上有的地址信息 ******<br> #PermitEmptyPasswords no --- 是否允许空密码登录 #PermitRootLogin yes --- 不允许root用户登录 115 #UseDNS yes --- 是否进行DNS反向解析 no 79 GSSAPIAuthentication yes --- 是否开启GSSAPI no |
4、SSH密钥对的种类
1 2 3 | ssh -keygen -t dsa ssh -keygen -t rsa |
5、扫描网站端口信息
1 2 3 4 5 | 安装: yum install -y nmap 扫描: nmap -p 1-65535 www.baidu.com |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现