专栏首页分布式系统和大数据处理linux上配置ssh实现免密登录

linux上配置ssh实现免密登录

linux上配置ssh实现免密登录

2018-7-16 作者: 张子阳 分类: Linux

当有多台服务器彼此进行通信时,可以通过使用ssh来免去输入密码的步骤。这篇文章将以两台服务器作为范例,演示如何通过ssh进行登录。

在未配置ssh之前,首先需要安装ssh:

yum install -y ssh

本机ssh登录

假设有两台主机,IP分别是:192.168.1.56 和 192.168.1.57,主机名分别叫做dev56和dev57。我们先配置dev56,使其可以登录自身(即从dev56登录dev56)。

先使用putty登录到dev56,再使用下面的命令尝试登录自己:

# ssh localhost

此时因为还没有进行配置,会发现系统要求输入密码,当输入和putty一样的密码时,可以登录成功。

putty几乎是windows上最常用的linux客户端了。

接下来,使用下面的命令,创建无密码的公钥:

# ssh-keygen -t rsa -P "" Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:/g4KmeerXa4rBfeccjlTthDWTeeNBv9ova8BuV9VmMM root@dev56 The key's randomart image is: +---[RSA 2048]----+ | . oo . | | o . .* = | | . . E o| | . . . o o =.| | o oS* .o o +| | oo.O . + o| | +..o+o . ...| | .= + o . o.| | .oB+..o o..| +----[SHA256]-----+

出现输入文件名的提示时,可以直接按回车不指定,系统会采用默认的名称。这样会在~/.ssh文件夹下生成两个文件,id_rsa(私钥)和id_rsa.pub(公钥)。继续执行下面命令:

# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

这条命令将会把ssh公钥加入到authorized_keys当中。这样,拥有ssh公钥的机器就可以实现免密登录了(当前就是本机)。再次使用ssh localhost进行登录:

# ssh localhost Last login: Mon Jul 16 14:58:21 2018 from ::1

此时,不再需要密码就可以成功登录了。

由其他服务器ssh登录本机

上一部分我们完成了自机的ssh登录,接下来就要完成从dev57 ssh登录到dev56。原理和上面是类似的:先生成dev57的公钥、私钥,然后将dev57的公钥,加入到dev56的authorized_keys当中。

在dev57上,再次执行下面命令生成密钥对:

# ssh-keygen -t rsa -P ""

在dev57上,使用cat输出一下公钥的内容:

# cat ~/.ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDe0wRuoUJWDRsbdClOZQBdbhv4lY4iGU21+Ac552lwj/wBsP7gPNdZld/EVShIcglBJE4Mx9tycYXZpgDFLeenHQTaed5lw5TC+U0vEWvM/ulm76XXfewZh+phhTpg2LliL/Jx/gb5pOrD+YtWlmioJZxy9D1A3oXFE0J2wv9UEH9RvDrYDqI1WgYjvBLamWwFoM9TtSKD3Ia0F7gTYvXDTnDNX9zNXki3Gi9gYNGoveojScbMvY/yHOK/y2jfaIH/TpYWyPovGQSQijFWEYT6iCaZ5j7hLBGYFlwWAFc91so2nWynYPLOeAhe1jA4cydf7Nz8HsPXAS6ntKz8u8yz root@dev57

在dev56上(即要登录的机器,我们是从dev57登录dev56)上,将上面公钥的内容写入authorized_keys:

# echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDe0wRuoUJWDRsbdClOZQBdbhv4lY4iGU21+Ac552lwj/wBsP7gPNdZld/EVShIcglBJE4Mx9tycYXZpgDFLeenHQTaed5lw5TC+U0vEWvM/ulm76XXfewZh+phhTpg2LliL/Jx/gb5pOrD+YtWlmioJZxy9D1A3oXFE0J2wv9UEH9RvDrYDqI1WgYjvBLamWwFoM9TtSKD3Ia0F7gTYvXDTnDNX9zNXki3Gi9gYNGoveojScbMvY/yHOK/y2jfaIH/TpYWyPovGQSQijFWEYT6iCaZ5j7hLBGYFlwWAFc91so2nWynYPLOeAhe1jA4cydf7Nz8HsPXAS6ntKz8u8yz root@dev57" >> ~/.ssh/authorized_keys

在dev57上,使用ssh登录到dev56:

[root@dev57 ~]# ssh 192.168.1.56 The authenticity of host '192.168.1.56 (192.168.1.56)' can't be established. ECDSA key fingerprint is SHA256:BUgYzVjm7DBkb581+vJDZViW92Mf5QwKvbV46m1BZfE. ECDSA key fingerprint is MD5:4a:69:a9:1d:19:cd:a1:15:1b:6e:26:4d:c1:82:33:48. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.1.56' (ECDSA) to the list of known hosts. Last login: Mon Jul 16 15:54:50 2018 from ::1 [root@dev56 ~]#

第一次登录时,会提示是否继续连接(和使用putty第一次连接主机时一样),输入yes,可以看到已经成功登录到了dev56了。输入exit,会重新退回到dev57。

[root@dev56 ~]# exit logout Connection to 192.168.1.56 closed. [root@dev57 ~]#

使用ssh-copy-id工具

上面的配置方法相对基础,有一个ssh-copy-id的工具,可以快速地实现上面的过程,将本机的公钥复制到远程主机的authorized_keys文件上。假设有三台主机:node0、node1、node2,如果想要从本机远程对它们进行登录,可以执行下面的命令,将本机的公钥拷贝过去:

ssh-copy-id -i ~/.ssh/id_rsa.pub root@node0 ssh-copy-id -i ~/.ssh/id_rsa.pub root@node1 ssh-copy-id -i ~/.ssh/id_rsa.pub root@node2

如果不是root用户,假如说用户名是hadoop,且端口号为22001,那么只要稍微修改一下语句就可以了:

ssh-copy-id -i $HOME/.ssh/id_rsa.pub -p 22001 hadoop@node0 ssh-copy-id -i $HOME/.ssh/id_rsa.pub -p 22001 hadoop@node1 ssh-copy-id -i $HOME/.ssh/id_rsa.pub -p 22001 hadoop@node2

至此,你应该已经了解如何配置ssh的免密登录了。配置好ssh还有一个作用就是可以方便地使用scp工具在不同的linux服务器间拷贝文件。

感谢阅读,希望这篇文章能给你带来帮助!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Go语言Tips

    转型到Go以后,因为语言的不熟悉,以往很常见的一些操作有时候也需要去Google一下。这里将一些结果记录下来,方便日后查阅。

    张子阳
  • Linux入门很简单

    因为计划以后用Linux作为服务器操作系统,并购买了腾讯云的服务器,安装了CentOS。但由于自己对于Linux知之甚少,于是就想买一本比较简单的入门书。最后选...

    张子阳
  • 免密码从windows复制文件到linux

    有时候,我们需要使用编码的方式将文件从Windows系统发送到Linux系统上,这篇文章将记录如何实现这一过程。

    张子阳
  • linux远程登录ssh免密码配置方法

    二、原理 很简单,使用ssh-keygen 在主机A上生成private和public密钥,将生成的public密钥拷贝到远程机器主机B上后,就可以使用ssh命...

    习惯说一说
  • 服务器配置ssh密钥登陆

    Java那些事儿
  • Linux下SSH服务器搭建

    版权声明:本文为博主原创文章,转载请注明博客地址: ...

    zy010101
  • 免密登录

    抄来的。。找不到原文链接了。。 A为本地主机(即用于控制其他主机的机器) ; B为远程主机(即被控制的机器Server), 假如ip为172.24.253....

    _淡定_
  • 在Mac上使用ssh-key免密码登录服务器

    从很早之前开始,在搭建测试服务器的时候,就不停的谷歌怎么免密登录服务器,每次配置好免密登录后,到搭建新的服务器时,又忘记了具体的命令,所以决定把这个方法记下来,...

    Originalee
  • Ubuntu 16.04 LTS中没有.ssh文件,该如何解决呢?

    sudo apt install openssh-server  或者  sudo apt-get install openssh-server

    黑泽君
  • linux配置ssh互信实现免密登陆

    公钥认证的基本思想 对信息的加密和解密采用不同的key,这对key分别称作private key(私钥)和public key(公钥),其中,public ke...

    行 者

扫码关注云+社区

领取腾讯云代金券