linux配置秘钥登录和去掉密码登录

原创 2018-02-27 15:45 阅读(121)次


本人一直都用xshell登录远程linux。默认情况不论是机房服务器或者云服务器,默认都是密码登录。但工作多年,曾经见过多次服务器被暴力破解密码的情况,建议用户还是都选用秘钥登录的方式较为安全。

原理

不管是再复杂的密码组合,只要有时间,总是能用暴力破解开的。当然并不是一定会有人去尝试暴力破解你的密码。但秘钥登录就没有办法暴力破解。如果你私钥丢了就另当别论了。

密钥形式登录的原理是:利用密钥生成器制作一对密钥——一只公钥和一只私钥。将公钥添加到服务器的某个账户上,然后在客户端利用私钥即可完成认证并登录。这样一来,没有私钥,任何人都无法通过 SSH 暴力破解你的密码来远程登录到系统。此外,如果将公钥复制到其他账户甚至主机,利用私钥也可以登录。


步骤

1.    制作秘钥

用ssh-keygen生成秘钥,输入 (例子是在你要设置私钥登录的linux上执行,当然在其他linux执行后复制过来也可以)

ssh-keygen 


默认用rsa算法,
得到

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
这是询问生成的文件的存放地址,因为我们是用root用户生成秘钥,所以文件默认路径在root下的隐藏目录.ssh中。

括号中是默认值,不需要修改,直接enter键。

Enter passphrase (empty for no passphrase):
要求输入密码,可以直接enter键,即无密码,但我建议是输入一个密码更安全。请牢记这时候输入的密码。输入后密码是不显示的。

注意:如hadoop多节点之间配置免密码登录的时候,这边就不要填写密码了。

Enter same passphrase again: 
再次输入密码。

得到如下

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:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(这里每次执行是不同的)
The key's randomart image is:
+---[RSA 2048]----+
|*                |
|+o               |
|o.o              |
|oo .             |
|o.o +  .S.       |
|.= ooo...oo      |
|+..E.*o+.oo.     |
|o++.* ==+o.      |
|.+*+.++==        |
+----[SHA256]-----+

从提示可以看出,私钥生成为id_rsa, 公钥为id_rsa.pub。你可以cat查看他们。

2. 配置秘钥

将公钥配置到服务器上:

cd /root/.ssh/
cat id_rsa.pub >> authorized_keys

把公钥放到authorized_keys中。这是默认ssh用的公钥配置文件。最好是用cat过去,手动复制如果少一个字符可能会造成你一直无法登录。

将.ssh/id_rsa 文件复制到本地。

3.  配置文件权限

chmod 600 authorized_keys
chmod 700 /root/.ssh
如果是已经配置过的服务器,这步骤一般是可以省略。

4.   配置sshd

打开秘钥登录功能。

vi /etc/ssh/sshd_config

确认如下配置是yes。
PubkeyAuthentication yes

PermitRootLogin yes


这里先不要管理密码登录,避免配置失败还能用密码登录进去修改。

5.   重启sshd

service sshd restart
这里请自行确认服务重启了。可以用service sshd status来判断

6.    用xshell使用秘钥登录

用xshell连接服务器,会出现如下窗口,请选择Public key。我这里是已经关闭了密码登录,所以会自动选择Public key。


用户秘钥选择之前复制到本地的id_rsa文件,输入制作秘钥时候的密码。

顺利的话会登录成功。

7. 关闭密码登录

在确定秘钥登录成功后,将密码登录关闭。

vi /etc/ssh/sshd_config

确认
PasswordAuthentication no
重启sshd服务。

service sshd restart
再次尝试登录,发现密码登录选项已经置灰。

如果不再需要让某用户登录,只需要去authorized_keys中删除他的public key。

本文完


本站作品的版权皆为作品作者所有。

本站文字和内容为本站编辑或翻译,部分内容属本站原创,所以转载前务必通知本站并以超链接形式注明内容来自本站,否则以免带来不必要的麻烦。

本站内容欢迎分享,但拒绝有商业目的的转载!