配置SSH免密登录

2017/06/14 Linux 共 1317 字,约 4 分钟

使用场景

如果想从A机器192.168.80.30登录B机器192.168.80.40,每次ssh gongenbo@192.168.80.40然后输密码是不是很麻烦呢,其实可以通过配置SSH实现免密登录

设置方法

1. 生成密钥

首先在A机器使用ssh-keygen命令生成密钥。

$ ssh-keygen -t rsa

生成完后使用$ cd ~/.ssh命令进入进入ssh文件(注意:点开头的文件代表隐藏文件,需要使用$ ll -a ~命令才能看到),进入文件后可以看到id_rsa私钥文件、id_rsa.pub公钥文件,然后如果想从A机器免密登录B机器,需要将A机器上的公钥id_rsa.pub拷贝到B机器的授权文件authorized_keys才可以。方法有两种

2. 拷贝密钥

方法一:使用ssh-copy-id命令拷贝

其中ssh-copy-id命令后面跟 用户名@B机器的主机名 , 命令:

$ ssh-copy-id gongenbo@192.168.80.40

这时登录B机器,使用 ll ~/.ssh/命令,可以看到有一个authorized_keys的登录授权文件,文件内容是A机器的id_rsa.pub文件中的内容。

方法二:拷贝id_rsa.pub内容

其实ssh-copy-id的原理就是将A机器的id_rsa.pub公钥文件内容拷贝到了B机器的authorized_keys授权文件,这样A机器使用ssh gongenbo@192.168.80.40登录B机器时,B机器一查授权文件里有A的公钥文件,就不用输密码直接放行了。按照此逻辑,其实也可以用自建authorized_keys文件的方法拷贝。

    1. 如果B机器无.ssh文件夹需要先创建,有的话就不需要创建了,需要确认一下文件夹属性为700。
$ mkdir .ssh
    1. 修改.ssh文件夹权限为drwx——
$ chmod 700 .ssh 
    1. authorized_keys这个文件主要放别人的公钥,如果B机器.ssh文件夹中已有authorized_keys文件,并且文件中已经有了其他公钥,则需在authorized_keys授权文件的最下方加入最新的A机器的id_rsa.pub中的公钥内容,如果覆盖别的机器就无法免密登录了。如果没有authorized_keys需要先创建。 创建文件:
$ touch authorized_keys
    1. 修改文件权限为-rw——
chmod 600 authorized_keys
    1. 拷贝A机器id_rsa.pub到B机器的authorized_keys,编辑完后使用:wq命令保存文件

注意事项:拷贝id_rsa.pub文件中的公钥的时候可能显示为两行,但是其实是一行,所以一定要将公钥先拷贝到一个notepad中,合并为1行,然后再拷贝到authorized_keys文件!

$ vi authorized_keys

其他问题

如果还是出现ssh无法免密登录问题,可以使用-vvv命令查看登录过程

命令:

$ ssh -vvv gongenbo@192.168.80.40

如果还是无法登录,可以sudo vi /etc/ssh/sshd_config查看里面的StrictModes严格模式是不是no,如果不是,就进行修改,然后重启sshd。

支付宝打赏 微信打赏

您的打赏是对我最大的鼓励!

Search

    Post Directory