Linux使用key验证方式登录ssh

Using ssh-keygen as verification to login server

Posted by Icep on December 30, 2018

运行环境: Ubuntu 18.04 (不限)

如果没有安装ssh,先要安装ssh

1
$ sudo apt-get install ssh

创建key

1
$ ssh-keygen -t rsa

需要enter三次 会在用户目录下生成.ssh文件夹,里面生成id_rsa(私钥),id_rsa.pub(公钥)

ps: 查看目录下.开头的文件或者文件夹命令:ls -a

将公钥拷贝到远程主机S上

1
$ scp .ssh/id_rsa.pub root@45.77.12.24:/root

登录到远程主机S,将刚刚传输的文件追加到authorized_keys文件中去

如果没有创建authorized_keys文件:

1
2
3
$ mkdir /root/.ssh
$ cd .ssh
$ vi authorized_keys

将公钥文件追加到/root/.ssh/authorized_keys文件末尾

1
$ cat ~/id_rsa.pub >> /root/.ssh/authorized_keys

在远程主机S中修改权限

1
2
$ chmod 700 .ssh
$ chmod 600 .ssh/authorized_keys

注意权限必须为700和600(或644)

回到原来的本地主机A验证

1
2
$ ssh root@45.77.12.24
Last login: Sun Dec 30 03:39:45 2018 from 125.210.206.40

禁用帐号密码验证登录

将远程Linux服务器的/etc/ssh/sshd_config配置文件中的

PasswordAuthentication 改为 no

修改后/etc/init.d/sshd reload 加载修改后的配置文件,并使其生效。

这样其他远程客户端如果没有私钥,那么这些用户连输入密码的机会都没有(注意:保存备份好主机的公钥,密钥)