Linux-ssh密码认证和密钥认证及scp远程拷贝文件

1. 设定实验环境(desktop虚拟机 和 server虚拟机)

server ip是 真机ip+100(真机ip50以内,大于50的话则只加10)

desktop ip是 真机ip+200(真机ip50以内,大于50的话则只加20)

  1. 配置desktop虚拟机

    1. 设置虚拟机名字

      hostnamectl set-hostname desktop+ip

    2. 设置虚拟机ip地址,依次执行下面的操作

      cd /etc/sysconfig/network-scripts/

      ls #列出该包下的所有文件

      vim ifcfg-eth0 #修改配置文件

      将BOOTPROTO的值改为none

      加一行IPADDR,并给它赋值你要设置的ip地址

      加一行PREFIX,并给它赋值24

    3. 然后重新启用网络即可

      systemctl restart network 重新启用网络

      ifconfig 此时再看 ip ,发现 ip 已经成功修改了

    4. 如果以前有,则删除原有的公钥私钥文件

      rm -fr /root/.ssh/

  2. 配置server虚拟机

    1. 设置虚拟机的名字

      hostnamectl set-hostname desktop+ip

    2. 设置虚拟机ip地址,依次执行下面的操作

      cd /etc/sysconfig/network-scripts/

      ls #列出该包下的所有文件

      vim ifcfg-eth0 #修改配置文件

      将BOOTPROTO的值改为none

      加一行IPADDR,并给它赋值你要设置的ip地址

      加一行PREFIX,并给它赋值24

    3. 然后重新启用网络即可

      systemctl restart network 重新启用网络

      ifconfig 此时再看 ip ,发现 ip 已经成功修改了

    4. 如果以前有,则删除原有的公钥私钥文件

      rm -fr /root/.ssh/

2. ssh 命令的使用方式

  1. 连接远程主机,按照以下步骤操作即可

    ssh [email protected] (@前是远程主机的用户名,@后是远程主机的ip地址)

    yes(第一次建立连接需要确认一次你是否要与远程机建立连接)

    redhat(远程主机 root 用户的密码)

    cd Desktop 进入远程主机的Desktop目录

    touch Despicable_Me 会发现远程机的桌面多了一个名为 Depicable_Me 的文件

    logout 退出连接

  2. 如果要打开远程主机的图形工具,则再建立连接时加一个参数

    ssh -X [email protected]

    redhat 输入密码,建立连接

    firefox 这样你就打开了 ip地址为 172.25.254.120 的虚拟机的 firefox 浏览器

    此时 firefox 的进程并没有在打开浏览器的那台虚拟机上,而是在与远程机建立连接的本机上

    这时候停掉 firefox 的进程,那么远程机打开的 firefox 浏览器则也会关闭

3. scp 命令的使用方式

  • 远程拷贝分为两种:
    1. 从本地拷贝到远程服务器
    2. 从远程服务器拷贝到本地
  1. 从本地拷贝文件到远程服务器

    scp 本地文件路径 用户名@计算机IP(或者计算机名称):远程路径

    例如: scp /root/Desktop/Despicable_Me [email protected]:/root/Desktop/

    就是将本地 /root/Desktop/ 路径下的 Despicable_Me 的文件拷贝到 ip地址为:172.25.254.122 的 root 用户名的/root/Desktop/路径下

  2. 从本地拷贝文件夹到远程服务器

    scp -r 目录名 用户名@计算机IP(或者计算机名称):远程路径

    其实也和上面的大同小异,只不过这个是拷贝一个文件夹而已

  3. 从远程服务器拷贝文件到本地

    scp 用户名@计算机IP(或者计算机名称):远程路径 本地路径

    例如:scp [email protected]:/root/Desktop/Despicable_Me /root/Desktop/

    就是将远程服务器 /root/Desktop/ 路径下的Despicable_Me 的文件拷贝到本地 /root/Desktop/ 路径下

  4. 从远程服务器拷贝文件夹到本地

    scp -r 用户名@计算机IP或者(或者计算机名称):远程路径 本地路径

4. 密钥认证

  1. 生成密钥

    ssh-keygen

    三次回车即可生成密钥,位置是默认位置:/root/.ssh/

  2. 查看密钥

    cd /root/.ssh/ 进入存放密钥的目录

    ls 查看该目录下有哪些文件

    此时会发现,该目录下有两个文件,id_rsa 私钥 ;id_rsa.pub 公钥模板

  3. 本机加密

    ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected] 这块的 ip 是本机的 ip

  4. 关闭原始认证(密码认证)

    vim /etc/ssh/sshd_config 编辑配置文件

    修改 78 行的 PasswordAuthentication 的值为 no 关闭原始认证

    systemctl restart sshd.service 重启服务

  5. 将私钥给别人,别人就可以密钥认证与自己建立连接

    scp /root/.ssh/id_rsa [email protected]:/root/.ssh/ 将自己的私钥发给 ip 地址为 172.25.254.120 的虚拟机,

    这样别人就可以通过密钥认证与我建立连接了,别人只有输入以下命令就可以了

    ssh [email protected] 与服务器建立连接

  6. 服务器可以通过修改 /root/.ssh/ 下的 authorized_keys 文件的名字以达到想让别人建立连接就连接,不想让别人连接就不连接的目的

    cd /root/.ssh/ 进入存放公钥私钥的文件夹

    mv authorized_keys authorized_keys.haha 通过修改了 authorized_keys 文件的名字,就达到了不让别人建立连接的目的

5. 密钥认证与密码认证的对比

密钥认证相比于密码认证,它的安全性更高,而且可以做到想让谁与自己建立连接就让谁与自己建立连接,

不想让谁与自己建立连接就不然谁与自己建立连接。而且还可以让以前与自己密钥认证过的用户随时与自己

建立不上连接(通过修改文件名)

总而言之,密钥认证更安全一些

你可能感兴趣的:(Linux)