logo头像
Snippet 博客主题

Linux基础-SSH免密登录

Linux SSH登录由两种方式:

  1. 账户密码登录

  2. 密钥登录

我有两台主机,ip分别为192.168.5.1和192.168.5.100,我要从前者远程登录到后者主机上,下面我分别来演示一下两种方式:

账号密码登录

1
ssh root@192.168.5.100

注意: 默认端口号是22,如果不是22需要加入-p+端口号进行登录,比如远程登录示例:

1
2
3
4
5
6
7
8
9
10
11
12
litong@LT:~$ ssh -p22 root@192.168.5.100
root@192.168.5.100's password:
Last login: Sat Nov 23 18:34:53 2019 from 192.168.5.1
[root@localhost ~]# ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.5.100 netmask 255.255.255.0 broadcast 192.168.5.255
inet6 fe80::79ad:6fa6:c473:3647 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:b3:a4:0f txqueuelen 1000 (Ethernet)
RX packets 281 bytes 40054 (39.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 211 bytes 37007 (36.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

公钥免密登录

  1. 先在192.168.5.1这太机器上生成公钥;

    1
    ssh-keygen -t rsa

    执行上述命令后,敲三次回车即可生成,生成后会在当前账号的home的.ssh目录中。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    litong@LT:~$ ssh-keygen -t rsa
    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/litong/.ssh/id_rsa):
    /home/litong/.ssh/id_rsa already exists.
    Overwrite (y/n)?
    litong@LT:~$ ls -l ~/.ssh/
    总用量 12
    -rw------- 1 litong litong 1675 9月 10 22:03 id_rsa
    -rw-r--r-- 1 litong litong 400 9月 10 22:03 id_rsa.pub
    -rw-r--r-- 1 litong litong 2214 11月 20 21:54 known_hosts

    ​ authorized_keys:存放远程免密登录的公钥,主要通过这个文件记录多台机器的公钥,这个文件可以没有;

      id_rsa : 生成的私钥文件;

      id_rsa.pub : 生成的公钥文件;

      know_hosts : 已知的主机公钥清单。

    注意:

    ​ 1). ssh目录的权限必须是700

    ​ 2). .ssh/authorized_keys文件权限必须是600

  2. 确认公钥文件id_rsa.pub是否存在,并把公钥文件上传到远程登录的机器上。

    复制文件有多种方式:

    1. 通过ssh-copy-id的方式

      1
      sudo ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.5.100
    2. 通过scp将内容写到对方的文件中

      1
      scp -p ~/.ssh/id_rsa.pub root@192.168.5.100:/root/.ssh/authorized_keys
  3. 上传成功后,查看远程主机~/.ssh/authorized_keys文件的内容,其中内容包含要远程主机的公钥则说吗配置完成

    192.168.5.1机器公钥

    1
    2
    litong@LT:~/.ssh$ cat id_rsa.pub 
    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDEeCQP2arzLybGinLvKEgN6cJtINUhDL8uLIwaCJdsv7FbYrBK9R2I01F+pftjiiILCrg0GgwSThAJ7cCxbmriw+D1ZoZdC+MJPONiv4PF9KBWNTGdZ1fLjpEifUI3Aax23TdQqkHs+4+T8zOK2v4MsDgit4nqJheV2I+cXuumPlCONndfr43KxPsGJqAtb8yzkMA20/r8fnnOMbfblDnsAOTGWjC+ond2Eph5AlY2tW+s9JiFBHVawalheqYBVmKlNT3vqVp5IKrnJrIVagN59FKqSOAYTFc/7eR61npGtf0+Ftew137FICGp7F6v4JxjqNuSkxsXsH6+2Z071A3X ltyeamin@gmail.com

    192.168.5.100远程机器免密登录公钥

    1
    2
    root@localhost .ssh]# cat authorized_keys 
    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDEeCQP2arzLybGinLvKEgN6cJtINUhDL8uLIwaCJdsv7FbYrBK9R2I01F+pftjiiILCrg0GgwSThAJ7cCxbmriw+D1ZoZdC+MJPONiv4PF9KBWNTGdZ1fLjpEifUI3Aax23TdQqkHs+4+T8zOK2v4MsDgit4nqJheV2I+cXuumPlCONndfr43KxPsGJqAtb8yzkMA20/r8fnnOMbfblDnsAOTGWjC+ond2Eph5AlY2tW+s9JiFBHVawalheqYBVmKlNT3vqVp5IKrnJrIVagN59FKqSOAYTFc/7eR61npGtf0+Ftew137FICGp7F6v4JxjqNuSkxsXsH6+2Z071A3X ltyeamin@gmail.com
  1. 尝试免密登录。

    1
    2
    litong@LT:~/.ssh$ ssh root@192.168.5.100
    Last login: Sat Nov 23 19:07:01 2019 from 192.168.5.1

总结

日常工作中,免密登录用处特别多,项目部署的时候上传时候需要免密登录,不可能将密码原文设置到配置文件中,这样特别不安全。

支付宝打赏 微信打赏

请作者喝杯咖啡吧