SSH连接原理及ssh-key讲解
Posted mendermi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SSH连接原理及ssh-key讲解相关的知识,希望对你有一定的参考价值。
一、远程连接的两种方式
1、telnet 明文连接,不安全。 连接方式:telnet 加IP加端口号(可判断对方的某个端口是否开启)
2、ssh 加密连接,安全 。连接方式:ssh加IP 对方22端口必须是开启状态
可指定登录的用户,不指定默认登录root用户
以上必须安装scp命令,支持远程连接才行,并且以上两种不能彼此连接。
二、远程复制
1、命令说明:
scp 远程复制 参数-P(大写):接端口,默认22 -r:递归,表示拷贝目录 -p:表示在拷贝前后保持文件或目录属性 -l limit:限制速度
2、实例:
例1:把本地的/etc/hosts远程复制给对方
scp /etc/hosts [email protected]:/etc
例2、从对方取文件:
scp [email protected]:/etc/hosts /etc
注:如果远程登录时候很慢,改个配置文件即可方法如下:
1、vim /etc/ssh/sshd_config 里面第81行GSSAPIAuthentication yes改成no(表示不需要验证)122行#UseDNS yes改成UseDNS no (反向解析)
2、重启sshd服务
3、把改好的配置文件复制给对方服务器
4、重启对方的sshd服务
三、密钥对
密钥对:是一个含有私钥的文件和一个含有公钥的文件,两只关系为用私钥登录公钥,实现免密码登录,私钥可以一对多个公钥。私钥会放在家目录下的隐藏.ssh目录里,私钥权限为600,公钥644
四、密钥对应用
1、命令:
创建密钥对:ssh-keygen 参数:-t:指定加密类型(rsa,dsa)。-f:指定密钥对文件的名字 。 -P(大写):指定密码
命令说明:
1)创建密钥对时,要你输入的密码,为进行密钥对验证时输入的密码(和linux角色登录的密码完全没有关系);
2)如果我们要进行的是SSH免密码连接,那么这里密码为空跳过即可。
3)如果在这里你输入了密码,那么进行SSH密钥对匹配连接的时候,就需要输入这个密码了。(此密码为独立密码)
4)用户家目录下的.ssh隐藏目录下会生成:id_rsa id_rsa.pub 两个文件。id_rsa是用户的私钥;id_rsa.pub则是公钥
五、实例
例1:生成密钥对,传给对方服务器
1、创建密钥对 ssh-keygen
2、将公钥id_rsa.pub文件复制到另外一台服务器的用户家目录下的.ssh目录下 ,如果没有需要创建一个。并且权限改成700
3、将拷贝过去的id_rsa.pub文件里的内容追加到~/.ssh/authorized_keys文件里
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
例2:登录普通用户远程免密码
1、将公钥id_rsa.pub文件复制到另外一台服务器的普通用户家目录下
scp ~/.ssh/id_rsa.pub [email protected]:~
2、将公钥内容写入cat ~/.ssh/id_rsa.pub >> ~/authorized_keys
3、在去另外一台服务器家目录下创建.ssh目录并修改权限为700,把属主改为普通用户
4、authorized_keys移动到.ssh目录下,改属主为普通用户
例3:非交互式一条命令创建密钥对
命令说明:ssh-copy-id 分发公密钥对命令 参数:-i 指定要分发的内容
1、一条命令生成密钥对
ssh-keygen -t dsa -f ~/.ssh/id_dsa -P ""
2、通过ssh-copy-id进行公钥的自动分发:
ssh-copy-id -i ~/.ssh/id_dsa.pub [email protected]
把公钥分发给普通用户yunjisuan
例4:免密码登录对方服务器
1、需要安装sshpass工具,需要云yum仓库安装。参数 -p 指定密码 -f:给出密码文件路径
2、sshpass -p “密码”ssh-copy-id -i ~/.ssh/id_dsa.pub [email protected]
表示给普通用户yunjisuan设定免密码连接
说明:
.ssh下的known_hosts文件是记录已经连接过的IP用的。
远程登录时无需提示直接记录方法 --免交互分发公钥
sshpass -p “密码” ssh-copy-id -i ~/.ssh/id_dsa.pub "-o StrictHostKeyChecking=no 对方IP"
命令说明:-o StrictHostKeyChecking=no:不记录对方主机信息
五、实战自动批量分发密钥对脚本
#!/bin/bash function Yum(){ umount /dev/sr0 &>/dev/null [ -d /media/cdrom ] || mkdir -p /media/cdrom [ $? -eq 0 ] && echo "创建目录成功" || exit mount /dev/sr0 /media/cdrom &>/dev/null if [ $? -eq 0 ];then echo "挂载成功" else exit fi [ -d /etc/yum.repos.d ] || mkdir -p /etc/yum.repos.d cd /etc/yum.repos.d mv * /tmp cat > moban.repo << ok [moban.repo] name=moban baseurl=file:///media/cdrom/ gpgcheck=0 enabled=1 ok if [ $? -eq 0 ];then echo "配置文件成功" else exit fi yum -y clean all &>/dev/null yum makecache &>/dev/null if [ $? -eq 0 ];then echo "搭建成功" else echo "搭建失败请从新检查" exit fi } function Yun(){ ping -c 1 www.baidu.com &>/dev/null if [ $? -eq 0 ];then echo "准备下载配置文件" else echo "不能连接外网,请检查网络" exit fi wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo yum -y clean all yum makecache if [ $? -eq 0 ];then echo "云yum搭建完毕" else echo "搭建失败,请从新检查" exit fi } which scp &>/dev/null if [ $? -eq 0 ];then echo "远程插件已安装" else Yum yum -y install openssh-client echo "远程插件安装完毕" fi which sshpass &>/dev/null if [ $? -eq 0 ];then echo "sshpass工具已安装" else Yun yum -y install sshpass echo "sshpass工具安装完毕" fi [ -d ~/.ssh ] && rm -rf ~/.ssh/* || mkdir .ssh chmod 700 ~/.ssh ssh-keygen -t dsa -f ~/.ssh/id_dsa -P "" &>/dev/null i=1 for ip in 192.168.200.{100..149} do ping -c 1 -i 0.1 $ip &>/dev/null if [ $? -eq 0 ];then sshpass -p "123456" ssh-copy-id -i ~/.ssh/id_dsa.pub "-o StrictHostKeyChecking=no [email protected]"$ip"" &>/dev/null echo "$ip分发成功" else echo "$ip网络不通,请检查网络" fi let i++ done
以上是关于SSH连接原理及ssh-key讲解的主要内容,如果未能解决你的问题,请参考以下文章