SSH-key链接原理

1,咱们想经过远程的方式从个人电脑远程链接到对方的电脑上那么在LINUX系统下咱们能够经过一种叫ssh的方式链接过去。SSH客户端(ssh命令)还包含一个颇有用的远程安全拷贝命令scp。算法

2,有两种链接方式,vim

(1)telnet  这种是明文的容易让黑客捕获。安全

应用方式:安装telnet(远程登陆的意思)服务器

Yum –y install telnetssh

安装好后怎么连接呢?编辑器

如 telnet 192.168.112.356 22      IP是对方IP地址加密

                                                                      22端口号、rest

固然对方也要安装telnetip

 

(2)ssh 是通过加密的。get

3,ssh有两种级别的链接方式

第一种级别(基于口令的安全验证)

只要你知道本身账号和口令,就能够登陆到远程主机。全部传输的数据都会被加密,可是不能保证你正在链接的服务器就是你想链接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间人”这种方式的攻击。第二种级别(基于密匙的安全验证)

须要依靠秘钥,也就是你必须为本身建立一对密匙,并把公用密匙放在须要访问的服务器上。客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求以后,先在该服务器上你的主目录下寻找你的公用密匙,而后把它和你发送过来的公用密匙进行比较。若是两个密匙一致,服务器就用公用密匙加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”以后就能够用你的私人密匙解密再把它发送给服务器。

总结1,

ssh链接第一级别:

 ssh链接默认端口是22

(1)

 有两台电脑 A和B.                       A要登陆 B电脑的超级用户

#ssh 192.168.29.144                   登陆超级用户IP前不用加@

第一次链接 会问你 记录不记录对方IP地址, 必须记录 YES

以后对方密码弹出 输入对方的密码回车

用hostname –I  查看下本机IP地址,这样就是对方的IP地址对方的主机了。

而后exit退出,就等退出了

 

(2)

有两台电脑 A和B.                       A要登陆 B电脑的普通用户  (不是超级用户)

添加个用户

    如我如今在另外一台电脑添加用户

     Useradd yunjisuan   建立一个叫yunjisuan 的用户   路径时/home 目录

     Echo “123123” | passwd  - -stdin yunjisuan   给yunjisun 用户添加密码。

我如今在第一台电脑我用ssh链接另外一台电脑的 yunjisuan用户

A电脑 输入: ssh yunjisuan@192.168.,29.144  (ip地址前不加东西就是超级用户)

以后输入密码:123123     就登陆进去了

 

 

(3)

远程复制在电脑双方都要安装 scp命令

yum insiall openssh-clients   (打开ssh客户端)  安装scp远程复制命令

以后怎么作呢?

1,我在A电脑

映射一句话    到/etc/hosts里

 # echo "'hostname –I' www.yunjisuan.com" >> /etc/hosts

Cat /etc/housts 看一下。 没问题

再用scp复制,把A的housts目录复制到B电脑  超级用户 /root/etc下

#scp /etc/hosts  192.168.29.144:/etc/回车  复制hosts这个目录过去。

注意:没加root@192.168.29.1144 就是默认超级用户登陆。

上B电脑查看 cat /etc/hosts  就有了

 

  2,以上我是把我A电脑的数据复制过。

去接下来。

我要把B电脑的数据拉过来怎么操做呢? 

  用#:scp root@192.168.29.144:~/222 .

        这是把B电脑的  根下YYY文件复制到我A电脑的  点 当前目录下。

 

 

 

总结2

ss h链接第二级别

秘钥的意义就在于不用输密码,就进入对方的服务端。

1,首先  建立秘钥对

ssh    Tab一下 会发现不少命令

   Ssh-Keygen 生成秘钥对的命令    (交互生成秘钥)

Ssh-copy-id分发秘钥对的命令

(1)# Ssh-Keygen 回车

会出来这三样,第一个…..(/root/.ssh/id_rsa) 这是这个命令 在根下root下 .ssh 点就是隐藏文件。后边的id_rsa就是秘钥对的名字     (在这个目录下生成一个叫id_rsa的文件)          

                       第二个是密码  直接回车不设就行

                       第三个也是密码,直接回车

                       就建立完了。

(2)#ls .ssh   看一下  有三个文件 分别是

id_rsa 私钥     id_rsa.pub 公钥           known_hosts远程登陆记录

客户端拿私钥     服务端拿公钥 (就是谁登陆谁 就把公钥发给谁)

私钥能够有不少份,但公钥只能有一份,私钥去找公钥。

(3)我如今在客户端建立了秘钥对

        如今得把公钥给服务端复制过去                    

怎么操做呢? 

首先(1)在服务端家目录下建立一个 mkdir  .ssh  目录

(2)ll  -d  .ssh/   看看他是什么权限?  为何看呢?由于你的秘钥权限过大,Linux系统担忧安全是不会让你成功的。

因此你得给它设置下权限(客户端服务端双方都要设置700权限)

      #:chmod 700 .ssh/             它权限必须是700

(3)在服务端把公钥更名vi /etc/ssh/sshd_config

         进入编辑器在47行  复制authorized_keys 这个名字

          mv id_rsa.pub authorized_keys     改为这个名字

                   set nu                                   显示行号

 

或者cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys  这样更名

 

(5)如今来客户端把公钥 复制过去给服务端(或者相反)

#:scp .ssh/authorized_keys 192.168.29.144:~/.ssh/

(6)还有些提升效率的操做。

vim /etc/ssh/sshd_config 后  

79行改为no             (centOS6是81行 改为on)  这是验证改为on 不验了

115行改为no           (centOS6是122行 改为on)   NDS 改为no

以后重启一下systemctl restart network

而后scp /etc/ssh/sshd_config root@192.168.29.144:/etc/ssh/

这个sshd_config这个修改后的配置文件给对方发过去。覆盖对方的配置文件(免得对方改了)  这是ssh的配置文件。

对方也重启一下systemctl sshd reload

(7)ssh  192.168.29.144  这就无密码的链接上了 

 结束           这就是秘钥链接 免秘钥的过程。

可是你连普通用户照样还有密码,除非普通用户也有公钥照以上这么改。

 

示范一下链接普通用户

前提:要在对方电脑上建立个普通用户

(1)Useradd yunjisuan   建立一个叫yunjisuan 的用户  路径在/home 里

          Echo “123123” | passwd –stdin yunjisuan   给yunjisun 用户添加密码。

        (2)而后进去对方电脑普通用户下(yunjisuan下)建立

#:mkdir   .ssh 目录   

在改.ssh的属主为yunjisuan   #:chown yujisuan  .ssh

                权限为700           #:chown 700  .ssh

                                           #:ll –d .ssh   查看下

(3) 由于普通用户里没有.ssh目录。全部要把我方的公钥给复制过去到yunjisuan用户的超级用户也就是~家目录里

#scp ~/.ssh/authorized_keys yunjisuan@192.168.29.144:~

(4)而后进去对方电脑cd /home/yunjisuan  就有authorized_keys文件了。

在把authorized_keys移到  .ssh里

mv authorized_keys  .ssh

(5)可是这时我进的是普通用户,普通用户要能用这文件就要把authorized_keys的属主改为普通用户:   

#:chown yujisuan  authorized_keys

(6)链接ssh yunjisuan@192.168.29.144 就链接上了

 

 

 总结3

ssh 秘钥链接的简化方式

在客户端.ssh下  还有个ssh-copy-id  它是用来分发公钥的刚才服务端作的那些操做它都能自动来完成。

(1)

一条命令生成秘钥对。 而不用以前的ssh-Keygen 生成秘钥对的命令  (交互生成手动分发)

        -d dsa   指定加密算法 dsa

         -f         指生成的秘钥放在哪里

         -P         杠大P “”里边没东西就是空密码

#ssh-keygen –t dsa –f ~/.ssh/id_dsa –P “” 回车

(2)一条命令分发

我如今要分发

         -i    你要分发什么?(要分发这个~/.ssh/id_dsa.pub公钥)

         ssh-copy-id –i ~/.ssh/id_dsa.pub yunjisuan@192.168.29.144

           如今进入服务端 家目录下/home

Ls –a 看一下  yunjisuan

最后一行多了一个700权限属主属组都是yungjisuan(直接就把权限改了)

回车后再看下.ssh里边公钥在不在。

    以后用客户端直接链接服务端。能够了

(3) 可是以上步骤分发秘钥时还须要输入密码。  怎么把这个密码也删掉呢?

       有个命令叫sshpass    须要云yum安装本地yum没有

sshpass –p “123123”   输入密码以后再分发。

       #sshpass –p “123123” ssh-copy-id –i ~/.ssh/id_dsa.pub yunjisuan@192.168.29.144

      以后登录OK了

(4)cd .ssh回车

Ls里有个这个目录  known_hosts 

这是记录来访的IP  若是要清空了,再去登录对方还要输入密码

清理方法是[.ssh] #  > know_hosts

怎么作我在清空known_hosts后,在链接对方,还能免密的链接上呢?

须要再加几个参数:

–o StrictHostKeyChecking=no

#sshpass –p “123123” ssh-copy-id –i ~/.ssh/id_dsa.pub “–o StrictHostKeyChecking=no  yunjisuan@192.168.29.144” 回车

(5)在链接就能够了                                           结束

相关文章
相关标签/搜索