我们正常使用ssh远程登陆服务器进行操作,须要输入用户名、服务器ip以及密码,当我们须要同时管理多个服务器的时侯,每次都须要重复输入那些东西会变得非常麻烦和浪费时间,因而我们可以通过配置秘钥来实现Ubuntu免密码登入。
实现这一目标五部,分别为:
-本地顾客端生成秘钥对
-上传秘钥到服务器端
-服务器端将秘钥添加到authorized_keys
-本地顾客端配置ssh,添加服务器别称
-测试
若果顾客端是使用MacOS或则Linux系统,可以直接在终端使用以下操作即可,假如Window系统,建议先安装Git-Bash,Git-bash自带ssh工具,在Git-Bash下,操作也和Linux或则MacOS系统一样。
本地顾客端生成秘钥对
在生成秘钥对之前,我们可以先查看一下我们是否早已生成过秘钥对,可以通过以下命令:
ls -la ~/.ssh
假如输出有id_rsa和id_rsa.pub,这么就证明之前以前生成过秘钥对,其中id_rsa是公钥,id_rsa.pub是私钥,我们可以直接使用。假如没有看见这两个文件,这么请追忆是否自己命名的秘钥对,假如没有或则早已忘掉是否当初生成过ubuntu自动登陆设置linux shell,这么久可以重新创建一个。方式如下:
ssh-keygen -t rsa -b 2048
执行命令后,会提示秘钥储存位置,以及寻问是否须要设置密码,通常我们可以一路按Enter确认即可完成秘钥生成。
完成后我们再度查看~/.ssh文件夹下是否由我们新创建的秘钥即可。
上传秘钥的服务器端
接出来,我们将我们创建好的私钥上传到服务器上,我们将会使用到scp命令。
scp ~/.ssh/id_rsa.pub @:~
这儿须要注意的是,我们须要上传的是私钥,其文件名为id_rsa.pububuntu自动登陆设置,公钥是须要我们保密的,这儿不要上传错。
服务器端将秘钥添加到authorized_keys
接出来,我们须要登陆我们的服务器,之后将我们刚上传的私钥添加到authorized_keys中。在添加之前,我们须要先做一下打算,具体如下:
-检测是否存在.ssh文件
-假如不存在须要自行创建
假如是刚安装的系统,以我的Ubuntu16.04.4为例,默认的ssh是没有手动创建.ssh文件夹的,这须要我们自己创建。不同版本的系统或则以不同途径安装的ssh可能情况会有所不一样,请按照实际情况处理。
# 查看是否存来 .ssh 文件夹
ls -la ~
# 如果不存在,创建 .ssh 文件夹
mkdir .ssh
# 将公钥添加到 authorized_keys 文件中
cat id_rsa.pub >> ~/.ssh/authorized_keys
以上即完成操作,在Ubuntu16.04.4的系统默认配置中,以上操作完成即可。但是,在一些不同版本的系统中,可能还须要配置以下ssh的配置,具体如下:
-备份/etc/ssh/sshd_config
-编辑/etc/ssh/sshd_config,将PubkeyAuthenticationno更改为PubkeyAuthenticationyes
本地顾客端配置ssh,添加服务器别称
完成前面的配置后,我们可以尝试在本地中尝试使用秘钥登陆看是否成功:
ssh -i ~/.ssh/id_rsa @
假如配置正确就可以正常免密码登入。
为了解决须要管理多台服务器,不希望记住太多不同的用户名和地址的问题linux安全加固,我们还可以为设置别称登陆,具体操作如下:
-在本地.ssh/文件夹下创建config
-向config中添加别称信息
# ~/.ssh/config 配置格式
Host
HostName
Port
User
IdentityFile ~/.ssh/id_rsa
测试
完成所有配置后,我们可以测试一下配置是否正确:
ssh
倘若能正常免密码登入,说明配置成功,我们之后便可以通过这样直接输入服务器别称的方法快速登陆服务器了。